Re: [PATCH 8/19]: SCST SYSFS interface implementation

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Vladislav Bolkhovitin
Date: Wednesday, November 10, 2010 - 1:19 pm

Boaz Harrosh, on 11/10/2010 12:58 PM wrote:

Thanks for sharing your thoughts with us. But the question isn't about
if it's possible to implement what we need locklessly. The question is
in two approaches how to synchronously delete objects with entries on SYSFS:

1. struct object_x {
	...
	struct kobject kobj;
	struct completion *release_completion;
};

static void x_release(struct kobject *kobj)
{
	struct object_x *x;
	struct completion *c;

	x = container_of(kobj, struct object_x, kobj);
	c = x->release_completion;
	kfree(x);
	complete_all(c);
}

void del_object(struct object_x *x)
{
	DECLARE_COMPLETION_ONSTACK(completion);

	...
	x->release_completion = &completion;
	kobject_put(&x->kobj);
	wait_for_completion(&completion);
}

and

2. struct object_x {
	...
	struct kobject kobj;
	struct completion release_completion;
};

static void x_release(struct kobject *kobj)
{
	struct object_x *x;

	x = container_of(kobj, struct object_x, kobj);
	complete_all(&x->release_completion);
}

void del_object(struct object_x *x)
{
	...
	kobject_put(&x->kobj);
	wait_for_completion(&completion);
	...
	kfree(x);
}

Greg asserts that (1) is the only correct approach while (2) is
incorrect, and I'm trying to justify that (2) is correct too and
sometimes could be better, i.e. simpler and clearer, because it
decouples object_x from SYSFS and its kobj. Then kobj becomes an
ordinary member of struct object_x without any special treatment and
with the same lifetime rules as other members of struct object_x. While
in (1) all lifetime of struct object_x is strictly attached to kobj, so
it needs be specially handled with additional code for that if struct
object_x has many other members which needed to be initialized/deleted
_before and after_ kobj as we have in SCST.

Vlad
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCHv4 0/19]: New SCSI target framework (SCST) with dev ..., Vladislav Bolkhovitin, (Fri Oct 1, 2:34 pm)
[PATCH 1/19]: Integration of SCST into the Linux kernel tree, Vladislav Bolkhovitin, (Fri Oct 1, 2:36 pm)
[PATCH 2/19]: SCST core's Makefile and Kconfig, Vladislav Bolkhovitin, (Fri Oct 1, 2:36 pm)
[PATCH 3/19]: SCST public headers, Vladislav Bolkhovitin, (Fri Oct 1, 2:38 pm)
[PATCH 4/19]: SCST main management files and private headers, Vladislav Bolkhovitin, (Fri Oct 1, 2:39 pm)
[PATCH 5/19]: SCST implementation of the SCSI target state ..., Vladislav Bolkhovitin, (Fri Oct 1, 2:42 pm)
[PATCH 6/19]: SCST internal library functions, Vladislav Bolkhovitin, (Fri Oct 1, 2:43 pm)
[PATCH 7/19]: SCST Persistent Reservations implementation, Vladislav Bolkhovitin, (Fri Oct 1, 2:44 pm)
[PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Fri Oct 1, 2:46 pm)
[PATCH 9/19]: SCST debugging support routines, Vladislav Bolkhovitin, (Fri Oct 1, 2:46 pm)
[PATCH 10/19]: SCST SGV cache, Vladislav Bolkhovitin, (Fri Oct 1, 2:48 pm)
[PATCH 11/19]: SCST core's docs, Vladislav Bolkhovitin, (Fri Oct 1, 2:48 pm)
[PATCH 12/19]: SCST dev handlers' Makefile, Vladislav Bolkhovitin, (Fri Oct 1, 2:49 pm)
[PATCH 13/19]: SCST vdisk dev handler, Vladislav Bolkhovitin, (Fri Oct 1, 2:50 pm)
[PATCH 14/19]: SCST pass-through dev handlers, Vladislav Bolkhovitin, (Fri Oct 1, 2:51 pm)
[PATCH 15/19]: Implementation of blk_rq_map_kern_sg(), Vladislav Bolkhovitin, (Fri Oct 1, 2:53 pm)
[PATCH 16/19]: scst_local target driver, Vladislav Bolkhovitin, (Fri Oct 1, 2:57 pm)
[PATCH 17/19]: SCST InfiniBand SRP target driver, Vladislav Bolkhovitin, (Fri Oct 1, 2:58 pm)
[PATCH 18/19]: ibmvstgt: Port from tgt to SCST, Vladislav Bolkhovitin, (Fri Oct 1, 3:04 pm)
[PATCH 19/19]: tgt: Removal, Vladislav Bolkhovitin, (Fri Oct 1, 3:05 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Mon Oct 11, 12:29 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Tue Oct 12, 11:53 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Thu Oct 14, 12:48 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Fri Oct 22, 10:30 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Fri Oct 22, 11:40 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Mon Nov 8, 12:58 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Tue Nov 9, 1:06 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Boaz Harrosh, (Wed Nov 10, 2:58 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Wed Nov 10, 1:19 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Joe Eykholt, (Wed Nov 10, 1:29 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Wed Nov 10, 1:38 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Joe Eykholt, (Wed Nov 10, 1:42 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Boaz Harrosh, (Thu Nov 11, 2:59 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Boaz Harrosh, (Thu Nov 11, 7:05 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Boaz Harrosh, (Thu Nov 11, 7:19 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Thu Nov 11, 1:50 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Dmitry Torokhov, (Thu Nov 11, 6:23 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Bart Van Assche, (Fri Nov 12, 5:09 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Dmitry Torokhov, (Fri Nov 12, 11:44 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Bart Van Assche, (Sat Nov 13, 3:52 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Sat Nov 13, 10:20 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Dmitry Torokhov, (Sun Nov 14, 11:59 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Dmitry Torokhov, (Mon Nov 15, 12:04 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Boaz Harrosh, (Mon Nov 15, 2:46 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Boaz Harrosh, (Mon Nov 15, 10:19 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Bart Van Assche, (Mon Nov 15, 10:45 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Bart Van Assche, (Mon Nov 15, 10:49 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Bart Van Assche, (Mon Nov 15, 10:53 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Nicholas A. Bellinger, (Mon Nov 15, 1:19 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Mon Nov 15, 1:36 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Mon Nov 15, 1:36 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Mon Nov 15, 1:37 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Mon Nov 15, 1:39 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Mon Nov 15, 1:39 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Mon Nov 15, 1:39 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Dmitry Torokhov, (Mon Nov 15, 2:14 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Joe Eykholt, (Mon Nov 15, 10:04 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Nicholas A. Bellinger, (Mon Nov 15, 11:03 pm)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Bart Van Assche, (Tue Nov 16, 12:15 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Florian Mickler, (Tue Nov 16, 1:49 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Tue Nov 16, 6:12 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Tue Nov 16, 6:13 am)
Re: [Scst-devel] [PATCH 8/19]: SCST SYSFS interface implem ..., Vladislav Bolkhovitin, (Tue Nov 16, 6:17 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Tue Nov 16, 6:18 am)
Re: [PATCH 8/19]: SCST SYSFS interface implementation, Vladislav Bolkhovitin, (Tue Nov 16, 6:19 am)
Re: [Scst-devel] [PATCH 8/19]: SCST SYSFS interface implem ..., Vladislav Bolkhovitin, (Thu Nov 18, 2:02 pm)
Re: [Scst-devel] [PATCH 8/19]: SCST SYSFS interface implem ..., Vladislav Bolkhovitin, (Fri Nov 19, 11:00 am)
Re: [Scst-devel] [PATCH 8/19]: SCST SYSFS interface implem ..., Vladislav Bolkhovitin, (Fri Nov 19, 1:50 pm)
Re: [Scst-devel] [PATCH 8/19]: SCST SYSFS interface implem ..., Vladislav Bolkhovitin, (Wed Nov 24, 1:35 pm)