30 Sep, 2015

1 commit

  • After a bit of poking around wondering why my 32-bit user-space can't
    seem to send a proper ioctl(BLKPG) to an MTD on my 64-bit kernel
    (ARM64), I noticed that struct blkpg_ioctl_arg is actually pretty
    unsuitable for use in the ioctl() ABI, due to its use of raw pointers,
    and its lack of alignment/packing restrictions (32-bit arch'es tend to
    pack the 4 fields into 4 32-bit words, whereas 64-bit arch'es would add
    padding after the third int, and make this 6 32-bit words).

    Anyway, this means BLKPG deserves some special compat_ioctl handling. Do
    the conversion in a small shim for MTD.

    block/compat_ioctl.c already has compat support for the block subsystem,
    but it does so by a re-marshalling data to/from user-space (see
    compat_blkpg_ioctl()). Personally, I think this approach is cleaner.

    Tested only on MTD, with an ARM32 user space on an ARM64 kernel.

    Signed-off-by: Brian Norris

    Brian Norris
     

13 Oct, 2012

1 commit


01 Aug, 2012

1 commit

  • Add a new operation code (BLKPG_RESIZE_PARTITION) to the BLKPG ioctl that
    allows altering the size of an existing partition, even if it is currently
    in use.

    This patch converts hd_struct->nr_sects into sequence counter because
    One might extend a partition while IO is happening to it and update of
    nr_sects can be non-atomic on 32bit machines with 64bit sector_t. This
    can lead to issues like reading inconsistent size of a partition. Sequence
    counter have been used so that readers don't have to take bdev mutex lock
    as we call sector_in_part() very frequently.

    Now all the access to hd_struct->nr_sects should happen using sequence
    counter read/update helper functions part_nr_sects_read/part_nr_sects_write.
    There is one exception though, set_capacity()/get_capacity(). I think
    theoritically race should exist there too but this patch does not
    modify set_capacity()/get_capacity() due to sheer number of call sites
    and I am afraid that change might break something. I have left that as a
    TODO item. We can handle it later if need be. This patch does not introduce
    any new races as such w.r.t set_capacity()/get_capacity().

    v2: Add CONFIG_LBDAF test to UP preempt case as suggested by Phillip.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Phillip Susi
    Signed-off-by: Jens Axboe

    Vivek Goyal
     

27 Apr, 2006

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds