Message ID | 20170523234854.21452-10-bart.vanassche@sandisk.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> +struct config_item *config_item_get_unless_zero(struct config_item *item) > +{ > + return item && kref_get_unless_zero(&item->ci_kref) ? item : NULL; > +} > +EXPORT_SYMBOL(config_item_get_unless_zero); Style nipick, I'd prefer something like: if (item && !kref_get_unless_zero(&item->ci_kref)) item = NULL; return item; Otherwise this looks fine to me: Reviewed-by: Christoph Hellwig <hch@lst.de> or should I pick it up through the configfs tree? -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, 2017-05-28 at 02:33 -0700, Christoph Hellwig wrote: > > +struct config_item *config_item_get_unless_zero(struct config_item *item) > > +{ > > + return item && kref_get_unless_zero(&item->ci_kref) ? item : NULL; > > +} > > +EXPORT_SYMBOL(config_item_get_unless_zero); > > Style nipick, I'd prefer something like: > > if (item && !kref_get_unless_zero(&item->ci_kref)) > item = NULL; > return item; > > Otherwise this looks fine to me: > > Reviewed-by: Christoph Hellwig <hch@lst.de> > > or should I pick it up through the configfs tree? Hello Christoph, If you could pick up this patch (any style) through the configfs tree that would be great. Thanks, Bart.
On 05/23/2017 06:48 PM, Bart Van Assche wrote: > This new function is needed to fix a deadlock in the SCSI target > XCOPY implementation. > > Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> > Cc: Joel Becker <jlbec@evilplan.org> > Cc: Christoph Hellwig <hch@lst.de> > Cc: linux-fsdevel@vger.kernel.org Looks ok and test by me. Reviewed-by: Mike Christie <mchristi@redhat.com> -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/configfs/item.c b/fs/configfs/item.c index 8b2a994042dd..e3501b9bbb60 100644 --- a/fs/configfs/item.c +++ b/fs/configfs/item.c @@ -138,6 +138,12 @@ struct config_item *config_item_get(struct config_item *item) } EXPORT_SYMBOL(config_item_get); +struct config_item *config_item_get_unless_zero(struct config_item *item) +{ + return item && kref_get_unless_zero(&item->ci_kref) ? item : NULL; +} +EXPORT_SYMBOL(config_item_get_unless_zero); + static void config_item_cleanup(struct config_item *item) { struct config_item_type *t = item->ci_type; diff --git a/include/linux/configfs.h b/include/linux/configfs.h index 2319b8c108e8..406e16dabc28 100644 --- a/include/linux/configfs.h +++ b/include/linux/configfs.h @@ -75,6 +75,7 @@ extern void config_item_init_type_name(struct config_item *item, struct config_item_type *type); extern struct config_item * config_item_get(struct config_item *); +extern struct config_item * config_item_get_unless_zero(struct config_item *); extern void config_item_put(struct config_item *); struct config_item_type {
This new function is needed to fix a deadlock in the SCSI target XCOPY implementation. Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Cc: Joel Becker <jlbec@evilplan.org> Cc: Christoph Hellwig <hch@lst.de> Cc: linux-fsdevel@vger.kernel.org --- fs/configfs/item.c | 6 ++++++ include/linux/configfs.h | 1 + 2 files changed, 7 insertions(+)