24 Sep, 2009

1 commit

  • id_reg.if_mode might be unitialized when (*mrq)->error is nonzero. move
    dev_dbg() inside the if so that we are sure we can use id_reg values.

    Signed-off-by: Jiri Slaby
    Cc: Alex Dubov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     

22 Sep, 2009

1 commit


23 May, 2009

1 commit

  • Until now we have had a 1:1 mapping between storage device physical
    block size and the logical block sized used when addressing the device.
    With SATA 4KB drives coming out that will no longer be the case. The
    sector size will be 4KB but the logical block size will remain
    512-bytes. Hence we need to distinguish between the physical block size
    and the logical ditto.

    This patch renames hardsect_size to logical_block_size.

    Signed-off-by: Martin K. Petersen
    Signed-off-by: Jens Axboe

    Martin K. Petersen
     

11 May, 2009

4 commits

  • Till now block layer allowed two separate modes of request execution.
    A request is always acquired from the request queue via
    elv_next_request(). After that, drivers are free to either dequeue it
    or process it without dequeueing. Dequeue allows elv_next_request()
    to return the next request so that multiple requests can be in flight.

    Executing requests without dequeueing has its merits mostly in
    allowing drivers for simpler devices which can't do sg to deal with
    segments only without considering request boundary. However, the
    benefit this brings is dubious and declining while the cost of the API
    ambiguity is increasing. Segment based drivers are usually for very
    old or limited devices and as converting to dequeueing model isn't
    difficult, it doesn't justify the API overhead it puts on block layer
    and its more modern users.

    Previous patches converted all block low level drivers to dequeueing
    model. This patch completes the API transition by...

    * renaming elv_next_request() to blk_peek_request()

    * renaming blkdev_dequeue_request() to blk_start_request()

    * adding blk_fetch_request() which is combination of peek and start

    * disallowing completion of queued (not started) requests

    * applying new API to all LLDs

    Renamings are for consistency and to break out of tree code so that
    it's apparent that out of tree drivers need updating.

    [ Impact: block request issue API cleanup, no functional change ]

    Signed-off-by: Tejun Heo
    Cc: Rusty Russell
    Cc: James Bottomley
    Cc: Mike Miller
    Cc: unsik Kim
    Cc: Paul Clements
    Cc: Tim Waugh
    Cc: Geert Uytterhoeven
    Cc: David S. Miller
    Cc: Laurent Vivier
    Cc: Jeff Garzik
    Cc: Jeremy Fitzhardinge
    Cc: Grant Likely
    Cc: Adrian McMenamin
    Cc: Stephen Rothwell
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Borislav Petkov
    Cc: Sergei Shtylyov
    Cc: Alex Dubov
    Cc: Pierre Ossman
    Cc: David Woodhouse
    Cc: Markus Lidel
    Cc: Stefan Weinhuber
    Cc: Martin Schwidefsky
    Cc: Pete Zaitcev
    Cc: FUJITA Tomonori
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • plat-omap/mailbox, floppy, viocd, mspro_block, i2o_block and
    mmc/card/queue are already pretty close to dequeueing model and can be
    converted with simple changes. Convert them.

    While at it,

    * xen-blkfront: !fs check moved downwards to share dequeue call with
    normal path.

    * mspro_block: __blk_end_request(..., blk_rq_cur_byte()) converted to
    __blk_end_request_cur()

    * mmc/card/queue: loop of __blk_end_request() converted to
    __blk_end_request_all()

    [ Impact: dequeue in-flight request ]

    Signed-off-by: Tejun Heo
    Cc: Rusty Russell
    Cc: Jeremy Fitzhardinge
    Cc: Stephen Rothwell
    Cc: Alex Dubov
    Cc: Markus Lidel
    Cc: Pierre Ossman
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • With the previous changes, the followings are now guaranteed for all
    requests in any valid state.

    * blk_rq_sectors() == blk_rq_bytes() >> 9
    * blk_rq_cur_sectors() == blk_rq_cur_bytes() >> 9

    Clean up accessor usages. Notable changes are

    * nbd,i2o_block: end_all used instead of explicit byte count
    * scsi_lib: unnecessary conditional on request type removed

    [ Impact: cleanup ]

    Signed-off-by: Tejun Heo
    Cc: Paul Clements
    Cc: Pete Zaitcev
    Cc: Alex Dubov
    Cc: Markus Lidel
    Cc: David Woodhouse
    Cc: James Bottomley
    Cc: Boaz Harrosh
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • With recent cleanups, there is no place where low level driver
    directly manipulates request fields. This means that the 'hard'
    request fields always equal the !hard fields. Convert all
    rq->sectors, nr_sectors and current_nr_sectors references to
    accessors.

    While at it, drop superflous blk_rq_pos() < 0 test in swim.c.

    [ Impact: use pos and nr_sectors accessors ]

    Signed-off-by: Tejun Heo
    Acked-by: Geert Uytterhoeven
    Tested-by: Grant Likely
    Acked-by: Grant Likely
    Tested-by: Adrian McMenamin
    Acked-by: Adrian McMenamin
    Acked-by: Mike Miller
    Cc: James Bottomley
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Borislav Petkov
    Cc: Sergei Shtylyov
    Cc: Eric Moore
    Cc: Alan Stern
    Cc: FUJITA Tomonori
    Cc: Pete Zaitcev
    Cc: Stephen Rothwell
    Cc: Paul Clements
    Cc: Tim Waugh
    Cc: Jeff Garzik
    Cc: Jeremy Fitzhardinge
    Cc: Alex Dubov
    Cc: David Woodhouse
    Cc: Martin Schwidefsky
    Cc: Dario Ballabio
    Cc: David S. Miller
    Cc: Rusty Russell
    Cc: unsik Kim
    Cc: Laurent Vivier
    Signed-off-by: Jens Axboe

    Tejun Heo
     

28 Apr, 2009

1 commit

  • There are many [__]blk_end_request() call sites which call it with
    full request length and expect full completion. Many of them ensure
    that the request actually completes by doing BUG_ON() the return
    value, which is awkward and error-prone.

    This patch adds [__]blk_end_request_all() which takes @rq and @error
    and fully completes the request. BUG_ON() is added to to ensure that
    this actually happens.

    Most conversions are simple but there are a few noteworthy ones.

    * cdrom/viocd: viocd_end_request() replaced with direct calls to
    __blk_end_request_all().

    * s390/block/dasd: dasd_end_request() replaced with direct calls to
    __blk_end_request_all().

    * s390/char/tape_block: tapeblock_end_request() replaced with direct
    calls to blk_end_request_all().

    [ Impact: cleanup ]

    Signed-off-by: Tejun Heo
    Cc: Russell King
    Cc: Stephen Rothwell
    Cc: Mike Miller
    Cc: Martin Schwidefsky
    Cc: Jeff Garzik
    Cc: Rusty Russell
    Cc: Jeremy Fitzhardinge
    Cc: Alex Dubov
    Cc: James Bottomley

    Tejun Heo
     

07 Apr, 2009

1 commit


10 Jan, 2009

1 commit

  • The code was shifting the endianness appropriately everywhere, annotate
    the structs to avoid the sparse warnings when assigning the endian types
    to the struct members, or passing them to be[16|32]_to_cpu:

    drivers/memstick/core/mspro_block.c:331:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:333:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:335:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:337:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:341:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:347:4: warning: cast to restricted __be32
    drivers/memstick/core/mspro_block.c:356:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:358:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:364:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:367:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:369:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:371:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:377:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:478:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:480:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:482:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:484:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:486:4: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:689:22: expected unsigned int [unsigned] [assigned] data_address
    drivers/memstick/core/mspro_block.c:689:22: got restricted __be32 [usertype]
    drivers/memstick/core/mspro_block.c:697:3: warning: cast to restricted __be32
    drivers/memstick/core/mspro_block.c:960:17: warning: incorrect type in initializer (different base types)
    drivers/memstick/core/mspro_block.c:960:17: expected unsigned short [unsigned] data_count
    drivers/memstick/core/mspro_block.c:960:17: got restricted __be16 [usertype]
    drivers/memstick/core/mspro_block.c:993:6: warning: cast to restricted __be16
    drivers/memstick/core/mspro_block.c:995:28: warning: cast to restricted __be16

    Signed-off-by: Harvey Harrison
    Cc: Alex Dubov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     

07 Jan, 2009

1 commit


21 Oct, 2008

2 commits

  • Signed-off-by: Al Viro

    Al Viro
     
  • To keep the size of changesets sane we split the switch by drivers;
    to keep the damn thing bisectable we do the following:
    1) rename the affected methods, add ones with correct
    prototypes, make (few) callers handle both. That's this changeset.
    2) for each driver convert to new methods. *ALL* drivers
    are converted in this series.
    3) kill the old (renamed) methods.

    Note that it _is_ a flagday; all in-tree drivers are converted and by the
    end of this series no trace of old methods remain. The only reason why
    we do that this way is to keep the damn thing bisectable and allow per-driver
    debugging if anything goes wrong.

    New methods:
    open(bdev, mode)
    release(disk, mode)
    ioctl(bdev, mode, cmd, arg) /* Called without BKL */
    compat_ioctl(bdev, mode, cmd, arg)
    locked_ioctl(bdev, mode, cmd, arg) /* Called with BKL, legacy */

    Signed-off-by: Al Viro

    Al Viro
     

20 Oct, 2008

1 commit

  • Tejun's commit 7b595756ec1f49e0049a9e01a1298d53a7faaa15 made sysfs
    attribute->owner unnecessary. But the field was left in the structure to
    ease the merge. It's been over a year since that change and it is now
    time to start killing attribute->owner along with its users - one arch at
    a time!

    This patch is attempt #1 to get rid of attribute->owner only for
    CONFIG_X86_64 or CONFIG_X86_32 . We will deal with other arches later on
    as and when possible - avr32 will be the next since that is something I
    can test. Compile (make allyesconfig / make allmodconfig / custom config)
    and boot tested.

    akpm: the idea is that we put the declaration of sttribute.owner inside
    `#ifndef CONFIG_X86'. But that proved to be too ambitious for now because
    new usages kept on turning up in subsystem trees.

    [akpm: remove the ifdef for now]
    Signed-off-by: Parag Warudkar
    Cc: Greg KH
    Cc: Ingo Molnar
    Cc: Tejun Heo
    Cc: Len Brown
    Cc: Jens Axboe
    Cc: Jean Delvare
    Cc: Roland Dreier
    Cc: David Brownell
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Parag Warudkar
     

09 Oct, 2008

2 commits

  • This patch converts memstick to use __blk_end_request() directly
    so that end_{queued|dequeued}_request() can be removed.

    Signed-off-by: Kiyoshi Ueda
    Signed-off-by: Jun'ichi Nomura
    Cc: Alex Dubov
    Signed-off-by: Jens Axboe

    Kiyoshi Ueda
     
  • * Implement disk_devt() and part_devt() and use them to directly
    access devt instead of computing it from ->major and ->first_minor.

    Note that all references to ->major and ->first_minor outside of
    block layer is used to determine devt of the disk (the part0) and as
    ->major and ->first_minor will continue to represent devt for the
    disk, converting these users aren't strictly necessary. However,
    convert them for consistency.

    * Implement disk_max_parts() to avoid directly deferencing
    genhd->minors.

    * Update bdget_disk() such that it doesn't assume consecutive minor
    space.

    * Move devt computation from register_disk() to add_disk() and make it
    the only one (all other usages use the initially determined value).

    These changes clean up the code and will help disk->part dereference
    fix and extended block device numbers.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     

14 Sep, 2008

1 commit

  • - 8-bit interface mode never worked properly. The only adapter I have
    which supports the 8b mode (the Jmicron) had some problems with its
    clock wiring and they discovered it only now. We also discovered that
    ProHG media is more sensitive to the ordering of initialization
    commands.

    - Make the driver fall back to highest supported mode instead of always
    falling back to serial. The driver will attempt the switch to 8b mode
    for any new MSPro card, but not all of them support it. Previously,
    these new cards ended up in serial mode, which is not the best idea
    (they work fine with 4b, after all).

    - Edit some macros for better conformance to Sony documentation

    Signed-off-by: Alex Dubov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alex Dubov
     

27 Jul, 2008

3 commits

  • Instead of using a separate thread to pump requests from block layer queue
    to memstick, do so inline, utilizing the callback design of the memstick.

    [akpm@linux-foundation.org: fix warnings]
    Signed-off-by: Alex Dubov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alex Dubov
     
  • In some cases it may be desirable to ensure that associated driver is not
    going to access the media in some period of time. "start" and "stop"
    methods are provided therefore to allow it.

    Signed-off-by: Alex Dubov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alex Dubov
     
  • Some controllers (Jmicron, for instance) can report temporal failure
    condition during power-on. It is desirable to account for this using a
    return value of "set_param" device method. The return value can also be
    handy to distinguish between supported and unsupported device parameters
    in run time.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Alex Dubov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alex Dubov
     

22 Jul, 2008

1 commit


20 Apr, 2008

1 commit


29 Mar, 2008

1 commit


20 Mar, 2008

5 commits


11 Mar, 2008

10 commits


14 Feb, 2008

1 commit


10 Feb, 2008

1 commit

  • Sony MemoryStick cards are used in many products manufactured by Sony.
    They are available both as storage and as IO expansion cards. Currently,
    only MemoryStick Pro storage cards are supported via TI FlashMedia
    MemoryStick interface.

    [mboton@gmail.com: biuld fix]
    [akpm@linux-foundation.org: build fix]
    Signed-off-by: Alex Dubov
    Signed-off-by: Miguel Boton
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alex Dubov