W dniu 10.10.2013 20:05, Michal Nazarewicz pisze:
On Wed, Oct 09 2013, Andrzej Pietrasiewicz wrote:
This will be required by configfs integration.

Signed-off-by: Andrzej Pietrasiewicz <andrze...@samsung.com>
Signed-off-by: Kyungin Park <kyungmin.p...@samsung.com>
---
  drivers/usb/gadget/storage_common.c |   42 +++++++++++++++++++++++++++++++++++
  drivers/usb/gadget/storage_common.h |    5 ++++
  2 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/drivers/usb/gadget/storage_common.c 
b/drivers/usb/gadget/storage_common.c
index 969948d..c7b78a1 100644
--- a/drivers/usb/gadget/storage_common.c
+++ b/drivers/usb/gadget/storage_common.c
@@ -439,4 +450,35 @@ ssize_t fsg_store_file(struct fsg_lun *curlun, struct 
rw_semaphore *filesem,
  }
  EXPORT_SYMBOL(fsg_store_file);

+ssize_t fsg_store_cdrom(struct fsg_lun *curlun, const char *buf, size_t count)
+{
+       unsigned        cdrom;
+       int             ret;
+
+       ret = kstrtouint(buf, 2, &cdrom);

Base 2?  That's rather strange.  Just keep it base 10 or use strtobool().

I vote for strtobool().


+       if (ret)
+               return ret;
+
+       curlun->cdrom = cdrom;
+
+       return count;
+}
+EXPORT_SYMBOL(fsg_store_cdrom);

Loading the module with cdrom set, implies read-only flag, but with this
function, it will become possible to set cdrom without setting read-only
flag.  Some care is needed to make it work properly.

Is it enough if I call fsg_store_ro() before actually assigning
curlun->crdrom = cdrom?

Of course some adjustments are needed; the essential part of
fsg_store_ro() factored out to e.g. _fsg_store_ro()
(assumes locks taken), fsg_store_cdrom() accepting the filesem and
taking it before calling _fsg_store_ro(); appropriate error handling in
case _fsg_store_ro() fails.

AP


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

Reply via email to