All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
To: Jan Kara <jack@suse.cz>, Christoph Hellwig <hch@infradead.org>
Cc: Eric Paris <eparis@parisplace.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>,
	Jeff Layton <jlayton@poochiereds.net>,
	"J. Bruce Fields" <bfields@fieldses.org>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/1] ftruncate, truncate: create fanotify events
Date: Tue, 11 Nov 2014 20:55:26 +0100	[thread overview]
Message-ID: <546269AE.4050200@gmx.de> (raw)
In-Reply-To: <20141111110943.GD10456@quack.suse.cz>

On 11.11.2014 12:09, Jan Kara wrote:
> On Mon 10-11-14 23:34:15, Christoph Hellwig wrote:
>> On Mon, Nov 10, 2014 at 09:30:29PM +0100, Jan Kara wrote:
>>>    So what I somewhat dislike about this patch is that notify_change() is
>>> sometimes called with dentry and sometimes with path. That way it's not
>>> completely clear when fanotify events will be generated and when not.

No. With my patch notify_change is still only called with dentry.
It is only new function notify_change_path which will be called with a path.
And this function will only be called from do_truncate up to now.

>>> Sadly it isn't easy to provide struct path in all the places where we are
>>> calling notify_change() so I'm not sure what would a better solution look
>>> like either :(

We only want to create FAN_MODIFY events for ATTR_SIZE. So only for 
these events we need a path.

To my knowledge notify_change is called with ATTR_SIZE from 
do_truncate(), ecryptfs_truncate() and will be called with ATTR_SIZE 
from ovl_setattr() for a truncation.

ecryptfs_dentry_to_lower_path() could be used in ecryptfs_truncate() to 
obtain a path.
ovl_path_upper() could be used in ovl_setattr() to obtain a path.

>>
>> I suspect the right thing to do is to split out the truncate path
>> from notify_change, as it's fairly different anyway.
>    Yeah, that would make sense. I wanted to say it's quite a lot of work to
> change all the filesystems (where the separation of truncate path makes
> sense as well IMHO) but actually it's possible to just do the separation at
> the VFS level and still call ->setattr() fs callback for now. Heinrich will
> you look into this?

You seem to agree that struct path has to passed to do_truncate() and 
further to the notification layer.

Currently do_truncate() calls notify_change() which does not accept a 
path argument.

Here the size change is implemented as an attribute change.
Furthermore time attributes are changed.

What do you exactly mean by
 > just do the separation at the virtual file system level
 > and still call ->setattr() fs callback for now.

Do you want to duplicate the logic of notify_change() to a
new function notify_truncate() which will at least have to handle 
ATTR_SIZE, ATTR_FORCE, ATTR_KILL_SUID, ATTR_KILL_SGID, ATTR_FILE and 
time attributes?

And from notify_truncate() call new function fsnotify_truncate() with a 
logic like fsnotify_modify() but accepting a path?

This would result in a lot of code duplication.

In which respect would such a patch be preferable?

Best regards

Heinrich Schuchardt

  reply	other threads:[~2014-11-11 19:55 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-03 18:16 [PATCH 1/1] ftruncate: create FAN_MODIFY and IN_MODIFY events Heinrich Schuchardt
2014-10-06 13:24 ` Jan Kara
2014-10-06 20:09   ` Heinrich Schuchardt
2014-10-07 19:23     ` Jan Kara
2014-10-23 21:35       ` [PATCH v2 1/1] ftruncate, truncate: create fanotify events Heinrich Schuchardt
2014-11-10 20:30         ` Jan Kara
2014-11-10 23:10           ` Heinrich Schuchardt
2014-11-11  7:34           ` Christoph Hellwig
2014-11-11 11:09             ` Jan Kara
2014-11-11 19:55               ` Heinrich Schuchardt [this message]
2014-11-14 10:01                 ` Jan Kara
2014-11-14 21:30                   ` Heinrich Schuchardt

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=546269AE.4050200@gmx.de \
    --to=xypron.glpk@gmx.de \
    --cc=bfields@fieldses.org \
    --cc=eparis@parisplace.org \
    --cc=hch@infradead.org \
    --cc=hirofumi@mail.parknet.co.jp \
    --cc=jack@suse.cz \
    --cc=jlayton@poochiereds.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --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.