Re: [PATCH 13/41] whiteout: tmpfs whiteout support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In message <1256152779-10054-14-git-send-email-vaurora@xxxxxxxxxx>, Valerie Aurora writes:
> From: Jan Blunck <jblunck@xxxxxxx>
> 
> Add support for whiteout dentries to tmpfs.

Shouldn't you CC Hugh Dickins here?  He's probably best positioned to review
the changes in mm/shmem.c.

> XXX - Not sure this is the right patch to put the code for supporting
> whiteouts in d_genocide().
> 
> Signed-off-by: Jan Blunck <jblunck@xxxxxxx>
> Signed-off-by: David Woodhouse <dwmw2@xxxxxxxxxxxxx>
> Signed-off-by: Valerie Aurora <vaurora@xxxxxxxxxx>
> ---
>  fs/dcache.c |    3 +-
>  mm/shmem.c  |  149 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
>  2 files changed, 137 insertions(+), 15 deletions(-)
> 
> diff --git a/fs/dcache.c b/fs/dcache.c
> index 0fcae4b..1fae1df 100644
> --- a/fs/dcache.c
> +++ b/fs/dcache.c
> @@ -2280,7 +2280,8 @@ resume:
>  		struct list_head *tmp = next;
>  		struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
>  		next = tmp->next;
> -		if (d_unhashed(dentry)||!dentry->d_inode)
> +		if (d_unhashed(dentry)||(!dentry->d_inode &&
> +					 !d_is_whiteout(dentry)))

I think this d_genocide patch should go elsewhere.  What does it have to do
with tmpfs?

Also, is your logic above correct?  If I understood d_genocide correctly,
then the code you changed attempts to skip over dentries for which
d_genocide has no work to do, like unhashed and negative dentries.  So I
assume it should also skip over whiteout dentries.  Your condition is

if (d_unhashed(dentry) || (!dentry->d_inode && !d_is_whiteout(dentry)))

but perhaps it needs to be

if (d_unhashed(dentry) || !dentry->d_inode || d_is_whiteout(dentry))

No?

Either way, you may want to document any complex conditional that may be
confusing to parse.

>  			continue;
>  		if (!list_empty(&dentry->d_subdirs)) {
>  			this_parent = dentry;
> diff --git a/mm/shmem.c b/mm/shmem.c
> index d713239..2faa14b 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
[mm/shmem.c changes snipped]

Erez.
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux