From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
To: Christoph Hellwig <hch@infradead.org>
Cc: viro@zeniv.linux.org.uk, tglx@linutronix.de,
linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org,
linux-btrfs@vger.kernel.org, mfasheh@suse.com,
jlbec@evilplan.org
Subject: Re: [PATCH 1/8] far: remove i_alloc_sem abuse
Date: Wed, 22 Jun 2011 00:57:43 +0900 [thread overview]
Message-ID: <87fwn3mb2g.fsf@devron.myhome.or.jp> (raw)
In-Reply-To: <20110620202030.577464178@bombadil.infradead.org> (Christoph Hellwig's message of "Mon, 20 Jun 2011 16:15:34 -0400")
Christoph Hellwig <hch@infradead.org> writes:
> Add a new rw_semaphore to protect bmap against truncate. Previous
> i_alloc_sem was abused for this, but it's going away in this series.
In FAT case, ->i_mutex was better. But, last time I saw, shmfs was using
->i_mutex to call ->bmap. So, this was chosen instead.
I'm not checking current version yet though, if shmfs had change, we can
use ->i_mutex.
BTW, this patch looks good to me.
Thanks.
> Signed-off-by: Christoph Hellwig <hch@lst.de>
>
> Index: linux-2.6/fs/fat/inode.c
> ===================================================================
> --- linux-2.6.orig/fs/fat/inode.c 2011-06-20 21:28:19.707963855 +0200
> +++ linux-2.6/fs/fat/inode.c 2011-06-20 21:29:25.031293882 +0200
> @@ -224,9 +224,9 @@ static sector_t _fat_bmap(struct address
> sector_t blocknr;
>
> /* fat_get_cluster() assumes the requested blocknr isn't truncated. */
> - down_read(&mapping->host->i_alloc_sem);
> + down_read(&MSDOS_I(mapping->host)->truncate_lock);
> blocknr = generic_block_bmap(mapping, block, fat_get_block);
> - up_read(&mapping->host->i_alloc_sem);
> + up_read(&MSDOS_I(mapping->host)->truncate_lock);
>
> return blocknr;
> }
> @@ -510,6 +510,8 @@ static struct inode *fat_alloc_inode(str
> ei = kmem_cache_alloc(fat_inode_cachep, GFP_NOFS);
> if (!ei)
> return NULL;
> +
> + init_rwsem(&ei->truncate_lock);
> return &ei->vfs_inode;
> }
>
> Index: linux-2.6/fs/fat/fat.h
> ===================================================================
> --- linux-2.6.orig/fs/fat/fat.h 2011-06-20 21:28:19.724630522 +0200
> +++ linux-2.6/fs/fat/fat.h 2011-06-20 21:29:25.034627215 +0200
> @@ -109,6 +109,7 @@ struct msdos_inode_info {
> int i_attrs; /* unused attribute bits */
> loff_t i_pos; /* on-disk position of directory entry or 0 */
> struct hlist_node i_fat_hash; /* hash by i_location */
> + struct rw_semaphore truncate_lock; /* protect bmap against truncate */
> struct inode vfs_inode;
> };
>
> Index: linux-2.6/fs/fat/file.c
> ===================================================================
> --- linux-2.6.orig/fs/fat/file.c 2011-06-20 21:28:19.744630521 +0200
> +++ linux-2.6/fs/fat/file.c 2011-06-20 21:29:54.501292390 +0200
> @@ -429,8 +429,10 @@ int fat_setattr(struct dentry *dentry, s
> }
>
> if (attr->ia_valid & ATTR_SIZE) {
> + down_write(&MSDOS_I(inode)->truncate_lock);
> truncate_setsize(inode, attr->ia_size);
> fat_truncate_blocks(inode, attr->ia_size);
> + up_write(&MSDOS_I(inode)->truncate_lock);
> }
>
> setattr_copy(inode, attr);
>
--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
next prev parent reply other threads:[~2011-06-21 15:57 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-20 20:15 [PATCH 0/8] remove i_alloc_sem Christoph Hellwig
2011-06-20 20:15 ` [PATCH 1/8] far: remove i_alloc_sem abuse Christoph Hellwig
2011-06-20 20:15 ` Christoph Hellwig
2011-06-21 15:57 ` OGAWA Hirofumi [this message]
2011-06-21 16:09 ` OGAWA Hirofumi
2011-06-21 16:09 ` Christoph Hellwig
2011-06-20 20:15 ` [PATCH 2/8] ext4: " Christoph Hellwig
2011-06-20 20:15 ` Christoph Hellwig
2011-06-21 16:34 ` Lukas Czerner
2011-06-21 16:48 ` Lukas Czerner
2011-06-21 17:16 ` Christoph Hellwig
2011-06-20 20:15 ` [PATCH 3/8] fs: simpler handling of zero sized reads in __blockdev_direct_IO Christoph Hellwig
2011-06-20 20:15 ` Christoph Hellwig
2011-06-20 20:15 ` [PATCH 4/8] fs: kill i_alloc_sem Christoph Hellwig
2011-06-20 20:15 ` Christoph Hellwig
2011-06-20 21:32 ` Joel Becker
2011-06-20 22:18 ` Christoph Hellwig
2011-07-01 2:58 ` Joel Becker
2011-06-21 5:40 ` Dave Chinner
2011-06-21 9:35 ` Christoph Hellwig
2011-06-20 20:15 ` [PATCH 5/8] fs: move inode_dio_wait calls into ->setattr Christoph Hellwig
2011-06-20 20:15 ` Christoph Hellwig
2011-06-20 20:15 ` [PATCH 6/8] fs: always maintain i_dio_count Christoph Hellwig
2011-06-20 20:15 ` Christoph Hellwig
2011-06-20 21:29 ` Joel Becker
2011-06-20 22:23 ` Christoph Hellwig
2011-06-20 20:15 ` [PATCH 7/8] btrfs: wait for direct I/O requests in truncate Christoph Hellwig
2011-06-20 20:15 ` Christoph Hellwig
2011-06-20 20:15 ` [PATCH 8/8] rw_semaphore: remove up/down_read_non_owner Christoph Hellwig
2011-06-20 20:15 ` Christoph Hellwig
2011-06-20 20:32 ` [PATCH 0/8] remove i_alloc_sem Christoph Hellwig
2011-06-21 23:54 ` Jan Kara
2011-06-22 9:39 ` Christoph Hellwig
2011-06-22 14:22 ` Ted Ts'o
2011-06-22 18:13 ` Jan Kara
2011-06-23 10:36 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87fwn3mb2g.fsf@devron.myhome.or.jp \
--to=hirofumi@mail.parknet.co.jp \
--cc=hch@infradead.org \
--cc=jlbec@evilplan.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=mfasheh@suse.com \
--cc=tglx@linutronix.de \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.