summaryrefslogtreecommitdiffstats
path: root/fs/hfs/catalog.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
commit59223edaa18759982db0a8aced0e77457d10c68e (patch)
tree89354903b01fa0a447bffeefe00df3044495db2e /fs/hfs/catalog.c
parentdb7d4daea91e105e3859cf461d7e53b9b77454b2 (diff)
Merge with Linux 2.3.6. Sorry, this isn't tested on silicon, I don't
have a MIPS box at hand.
Diffstat (limited to 'fs/hfs/catalog.c')
-rw-r--r--fs/hfs/catalog.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/hfs/catalog.c b/fs/hfs/catalog.c
index 48577a9e6..85e3a909b 100644
--- a/fs/hfs/catalog.c
+++ b/fs/hfs/catalog.c
@@ -302,6 +302,8 @@ static void __read_entry(struct hfs_cat_entry *entry,
entry->modify_date = hfs_get_nl(cat->u.dir.MdDat);
entry->backup_date = hfs_get_nl(cat->u.dir.BkDat);
dir->dirs = dir->files = 0;
+ hfs_init_waitqueue(&dir->read_wait);
+ hfs_init_waitqueue(&dir->write_wait);
} else if (cat->cdrType == HFS_CDR_FIL) {
struct hfs_file *fil = &entry->u.file;
@@ -647,7 +649,7 @@ static void update_dir(struct hfs_mdb *mdb, struct hfs_cat_entry *dir,
*/
static inline void start_write(struct hfs_cat_entry *dir)
{
- if (dir->u.dir.readers || dir->u.dir.read_wait) {
+ if (dir->u.dir.readers || waitqueue_active(&dir->u.dir.read_wait)) {
hfs_sleep_on(&dir->u.dir.write_wait);
}
++dir->u.dir.writers;
@@ -658,7 +660,7 @@ static inline void start_write(struct hfs_cat_entry *dir)
*/
static inline void start_read(struct hfs_cat_entry *dir)
{
- if (dir->u.dir.writers || dir->u.dir.write_wait) {
+ if (dir->u.dir.writers || waitqueue_active(&dir->u.dir.write_wait)) {
hfs_sleep_on(&dir->u.dir.read_wait);
}
++dir->u.dir.readers;