On Thu, Oct 03 2013, Andrzej Pietrasiewicz wrote:
> When configfs is in place, the luns will not be represented in sysfs,
> so there will be no struct device associated with a lun.
> In order to maintain compatibility and allow configfs adoption
> sysfs is made optional in this patch.
>
> As a consequence some debug macros need to be adjusted. Two new
> fields are added to struct fsg_lun: name and name_pfx.
> The "name" is for storing a string which is presented to the user
> instead of the dev_name. The "name_pfx", if non-NULL, is prepended
> to the "name" at printing time.
>
> The name_pfx is for a future lun.0, which will be a default group in
> mass_storage.<name>. By design at USB function configfs group's creation
> time its name is not known (but instead set a bit later in
> drivers/usb/gadget/configfs.c:function_make) and it is this name that
> serves the purpose of the said name prefix. So instead of copying
> a yet-unknown string a pointer to it is stored in struct fsg_lun.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrze...@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.p...@samsung.com>

Acked-by: Michal Nazarewicz <min...@mina86.com>

> ---
>  drivers/usb/gadget/f_mass_storage.c |   41 ++++++++++++++++++++++++++--------
>  drivers/usb/gadget/f_mass_storage.h |    2 +
>  drivers/usb/gadget/storage_common.h |   20 +++++++++++++---
>  3 files changed, 49 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/usb/gadget/f_mass_storage.c 
> b/drivers/usb/gadget/f_mass_storage.c
> index 7d57542..14c9e5b 100644
> --- a/drivers/usb/gadget/f_mass_storage.c
> +++ b/drivers/usb/gadget/f_mass_storage.c
> @@ -2654,6 +2660,17 @@ static void _fsg_common_free_buffers(struct fsg_buffhd 
> *buffhds, unsigned n)
>       }
>  }
>  
> +static inline void fsg_common_remove_sysfs(struct fsg_lun *lun)
> +{
> +     device_remove_file(&lun->dev, &dev_attr_nofua);
> +     device_remove_file(&lun->dev, lun->cdrom
> +                        ? &dev_attr_ro_cdrom : &dev_attr_ro);
> +     device_remove_file(&lun->dev, lun->removable
> +                        ? &dev_attr_file : &dev_attr_file_nonremovable);

It actually occurred to me that dose conditions should not be
necessary.  Since the file is being removed, only the name is of
interest to the device_remove_file.  Just a thought.

> +}
> +
> +#define MAX_LUN_NAME_LEN 80
> +
>  struct fsg_common *fsg_common_init(struct fsg_common *common,
>                                  struct usb_composite_dev *cdev,
>                                  struct fsg_config *cfg)

> @@ -2737,6 +2756,12 @@ struct fsg_common *fsg_common_init(struct fsg_common 
> *common,
>               }
>               *curlun_it = curlun;
>  
> +             curlun->name = kzalloc(MAX_LUN_NAME_LEN, GFP_KERNEL);
> +             if (!curlun->name) {
> +                     rc = -ENOMEM;
> +                     common->nluns = i;
> +                     goto error_release;
> +             }
>               curlun->cdrom = !!lcfg->cdrom;
>               curlun->ro = lcfg->cdrom || lcfg->ro;
>               curlun->initially_ro = curlun->ro;
> @@ -2746,6 +2771,7 @@ struct fsg_common *fsg_common_init(struct fsg_common 
> *common,
>               /* curlun->dev.driver = &fsg_driver.driver; XXX */
>               dev_set_drvdata(&curlun->dev, &common->filesem);
>               dev_set_name(&curlun->dev, "lun%d", i);
> +             strlcpy(curlun->name, dev_name(&curlun->dev), MAX_LUN_NAME_LEN);

Instead of creating a new buffer and copying the data, would it actually
be possible to just store a pointer to dev_name(&curlun->dev)?  And with
configfs, store pointer to the directory name?  Since we control when
device is unregistered, and I presume we will be notified when configfs
directory is deleted, we should be able to NULL the name when the
pointer stops being valid.  This would remove a magic number and the
need to maintain the buffer.

>  
>               rc = device_register(&curlun->dev);
>               if (rc) {

-- 
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  Michał “mina86” Nazarewicz    (o o)
ooo +--<m...@google.com>--<xmpp:min...@jabber.org>--ooO--(_)--Ooo--

Attachment: signature.asc
Description: PGP signature

Reply via email to