diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-02-13 07:27:43 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-02-13 07:27:43 -0500 |
commit | 7359a19cc758946aba0e45233b8641256b194884 (patch) | |
tree | d96aaeb2fb239efe6fdb0b4698eb94108719f423 /fs/gfs2/quota.c | |
parent | 18ec7d5c3f434aed9661ed10a9e1f48cdeb4981d (diff) |
[GFS2] Fix for root inode ref count bug
Umount is now working correctly again. The bug was due to
not getting an extra ref count when mounting the fs. We
should have bumped it by two (once for the internal pointer
to the root inode from the super block and once for the
inode hanging off the dcache entry for root).
Also this patch tidys up the code dealing with looking up
and creating inodes. We now pass Linux inodes (with gfs2_inodes
attached) rather than the other way around and this reduces code
duplication in various places.
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/quota.c')
-rw-r--r-- | fs/gfs2/quota.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c index 138fdf559a9a..7b5573946f19 100644 --- a/fs/gfs2/quota.c +++ b/fs/gfs2/quota.c | |||
@@ -572,7 +572,7 @@ static void do_qc(struct gfs2_quota_data *qd, int64_t change) | |||
572 | static int gfs2_adjust_quota(struct gfs2_inode *ip, loff_t loc, | 572 | static int gfs2_adjust_quota(struct gfs2_inode *ip, loff_t loc, |
573 | int64_t change, struct gfs2_quota_data *qd) | 573 | int64_t change, struct gfs2_quota_data *qd) |
574 | { | 574 | { |
575 | struct inode *inode = gfs2_ip2v(ip); | 575 | struct inode *inode = ip->i_vnode; |
576 | struct address_space *mapping = inode->i_mapping; | 576 | struct address_space *mapping = inode->i_mapping; |
577 | unsigned long index = loc >> PAGE_CACHE_SHIFT; | 577 | unsigned long index = loc >> PAGE_CACHE_SHIFT; |
578 | unsigned offset = loc & (PAGE_CACHE_SHIFT - 1); | 578 | unsigned offset = loc & (PAGE_CACHE_SHIFT - 1); |