change msc buffer flush depends on usb packets
authoryangkai <yangkai@ubuntu-fs>
Wed, 31 Aug 2011 02:24:26 +0000 (10:24 +0800)
committeryangkai <yangkai@ubuntu-fs>
Wed, 31 Aug 2011 02:24:26 +0000 (10:24 +0800)
drivers/usb/gadget/f_mass_storage.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 7179820..32bf6fc
@@ -84,7 +84,8 @@
 #define BULK_BUFFER_SIZE           16384 * 4//4096
 
 /* flush after every 4 meg of writes to avoid excessive block level caching */
-#define MAX_UNFLUSHED_BYTES  (512 * 1024)// (4 * 1024 * 1024) //original value is 4MB,Modifyed by xbw at 2011-08-18
+//#define MAX_UNFLUSHED_BYTES  (512 * 1024)// (4 * 1024 * 1024) //original value is 4MB,Modifyed by xbw at 2011-08-18
+#define MAX_UNFLUSHED_PACKETS 16
 
 /*-------------------------------------------------------------------------*/
 
@@ -233,7 +234,7 @@ struct lun {
        struct file     *filp;
        loff_t          file_length;
        loff_t          num_sectors;
-       unsigned int unflushed_bytes;
+       unsigned int unflushed_packet;
 
        unsigned int    ro : 1;
        unsigned int    prevent_medium_removal : 1;
@@ -1079,10 +1080,10 @@ static int do_write(struct fsg_dev *fsg)
                        fsg->residue -= nwritten;
 
 #ifdef MAX_UNFLUSHED_BYTES
-                       curlun->unflushed_bytes += nwritten;
-                       if (curlun->unflushed_bytes >= MAX_UNFLUSHED_BYTES) {
+                       curlun->unflushed_packet ++;
+                       if (curlun->unflushed_packet >= MAX_UNFLUSHED_PACKETS) {
                                fsync_sub(curlun);
-                               curlun->unflushed_bytes = 0;
+                               curlun->unflushed_packet = 0;
                        }
 #endif
                        /* If an error occurred, report it and its position */
@@ -2754,7 +2755,7 @@ static int open_backing_file(struct fsg_dev *fsg, struct lun *curlun,
        curlun->ro = ro;
        curlun->filp = filp;
        curlun->file_length = size;
-       curlun->unflushed_bytes = 0;
+       curlun->unflushed_packet = 0;
        curlun->num_sectors = num_sectors;
        LDBG(curlun, "open backing file: %s size: %lld num_sectors: %lld\n",
                        filename, size, num_sectors);