1. 14 4月, 2016 1 次提交
  2. 05 4月, 2016 1 次提交
    • K
      mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros · 09cbfeaf
      Kirill A. Shutemov 提交于
      PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
      ago with promise that one day it will be possible to implement page
      cache with bigger chunks than PAGE_SIZE.
      
      This promise never materialized.  And unlikely will.
      
      We have many places where PAGE_CACHE_SIZE assumed to be equal to
      PAGE_SIZE.  And it's constant source of confusion on whether
      PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
      especially on the border between fs and mm.
      
      Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
      breakage to be doable.
      
      Let's stop pretending that pages in page cache are special.  They are
      not.
      
      The changes are pretty straight-forward:
      
       - <foo> << (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> <foo>;
      
       - <foo> >> (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> <foo>;
      
       - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -> PAGE_{SIZE,SHIFT,MASK,ALIGN};
      
       - page_cache_get() -> get_page();
      
       - page_cache_release() -> put_page();
      
      This patch contains automated changes generated with coccinelle using
      script below.  For some reason, coccinelle doesn't patch header files.
      I've called spatch for them manually.
      
      The only adjustment after coccinelle is revert of changes to
      PAGE_CAHCE_ALIGN definition: we are going to drop it later.
      
      There are few places in the code where coccinelle didn't reach.  I'll
      fix them manually in a separate patch.  Comments and documentation also
      will be addressed with the separate patch.
      
      virtual patch
      
      @@
      expression E;
      @@
      - E << (PAGE_CACHE_SHIFT - PAGE_SHIFT)
      + E
      
      @@
      expression E;
      @@
      - E >> (PAGE_CACHE_SHIFT - PAGE_SHIFT)
      + E
      
      @@
      @@
      - PAGE_CACHE_SHIFT
      + PAGE_SHIFT
      
      @@
      @@
      - PAGE_CACHE_SIZE
      + PAGE_SIZE
      
      @@
      @@
      - PAGE_CACHE_MASK
      + PAGE_MASK
      
      @@
      expression E;
      @@
      - PAGE_CACHE_ALIGN(E)
      + PAGE_ALIGN(E)
      
      @@
      expression E;
      @@
      - page_cache_get(E)
      + get_page(E)
      
      @@
      expression E;
      @@
      - page_cache_release(E)
      + put_page(E)
      Signed-off-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      09cbfeaf
  3. 19 3月, 2016 1 次提交
  4. 21 2月, 2016 1 次提交
  5. 04 2月, 2016 1 次提交
  6. 25 1月, 2016 1 次提交
  7. 02 12月, 2015 3 次提交
  8. 10 11月, 2015 1 次提交
  9. 04 10月, 2015 2 次提交
  10. 23 7月, 2015 3 次提交
  11. 01 6月, 2015 1 次提交
  12. 10 5月, 2015 2 次提交
  13. 08 5月, 2015 1 次提交
  14. 28 4月, 2015 3 次提交
  15. 19 3月, 2015 3 次提交
  16. 18 3月, 2015 1 次提交
  17. 07 3月, 2015 1 次提交
  18. 25 2月, 2015 2 次提交
  19. 25 1月, 2015 3 次提交
  20. 10 1月, 2015 5 次提交
  21. 13 12月, 2014 1 次提交
  22. 11 12月, 2014 1 次提交
  23. 25 11月, 2014 1 次提交
    • M
      storage: Fix bus scan and multi-LUN support for SCM eUSCSI devices · 646a3843
      Mark Knibbs 提交于
      This patch does two things for SCM eUSCSI USB-SCSI converters:
      
      1. SCM eUSCSI bridge devices are hard-wired to use SCSI ID 7. On connecting
      the converter, access to that ID is attempted during the bus scan. Asking
      the converter to issue INQUIRY commands to itself isn't very polite and
      wastes time. Set this_id to 7 so __scsi_scan_target() skips it in the scan.
      
      2. Enable multi-LUN support. eUSCSI devices don't support Get Max LUN
      requests, returning an error (-32). [Different targets could have different
      numbers of LUNs, so it wouldn't make sense to return a particular value in
      response to Get Max LUN.]
      
      usb_stor_scan_dwork() does this:
          /* For bulk-only devices, determine the max LUN value */
          if (us->protocol == USB_PR_BULK && !(us->fflags & US_FL_SINGLE_LUN)) {
                  mutex_lock(&us->dev_mutex);
                  us->max_lun = usb_stor_Bulk_max_lun(us);
                  mutex_unlock(&us->dev_mutex);
      
      It avoids calling usb_stor_Bulk_max_lun() if US_FL_SINGLE_LUN, but not for
      US_FL_SCM_MULT_TARG. Since usb_stor_Bulk_max_lun() returns 0 in the error
      case, us->max_lun was always set to 0.
      
      [If the user doesn't want multi-LUN support (perhaps there are SCSI devices
      which respond to commands on all LUNs?), the US_FL_SINGLE_LUN quirk can be
      specified on the kernel command line.]
      Signed-off-by: NMark Knibbs <markk@clara.co.uk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      646a3843