diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-06-17 13:25:08 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-06-17 13:25:08 +0000 |
commit | 59223edaa18759982db0a8aced0e77457d10c68e (patch) | |
tree | 89354903b01fa0a447bffeefe00df3044495db2e /fs/hfs/catalog.c | |
parent | db7d4daea91e105e3859cf461d7e53b9b77454b2 (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.c | 6 |
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; |