Loading block/raw-posix.c +24 −0 Original line number Diff line number Diff line Loading @@ -729,9 +729,33 @@ static void raw_reopen_abort(BDRVReopenState *state) state->opaque = NULL; } static int hdev_get_max_transfer_length(int fd) { #ifdef BLKSECTGET int max_sectors = 0; if (ioctl(fd, BLKSECTGET, &max_sectors) == 0) { return max_sectors; } else { return -errno; } #else return -ENOSYS; #endif } static void raw_refresh_limits(BlockDriverState *bs, Error **errp) { BDRVRawState *s = bs->opaque; struct stat st; if (!fstat(s->fd, &st)) { if (S_ISBLK(st.st_mode)) { int ret = hdev_get_max_transfer_length(s->fd); if (ret >= 0) { bs->bl.max_transfer_length = ret; } } } raw_probe_alignment(bs, s->fd, errp); bs->bl.min_mem_alignment = s->buf_align; Loading Loading
block/raw-posix.c +24 −0 Original line number Diff line number Diff line Loading @@ -729,9 +729,33 @@ static void raw_reopen_abort(BDRVReopenState *state) state->opaque = NULL; } static int hdev_get_max_transfer_length(int fd) { #ifdef BLKSECTGET int max_sectors = 0; if (ioctl(fd, BLKSECTGET, &max_sectors) == 0) { return max_sectors; } else { return -errno; } #else return -ENOSYS; #endif } static void raw_refresh_limits(BlockDriverState *bs, Error **errp) { BDRVRawState *s = bs->opaque; struct stat st; if (!fstat(s->fd, &st)) { if (S_ISBLK(st.st_mode)) { int ret = hdev_get_max_transfer_length(s->fd); if (ret >= 0) { bs->bl.max_transfer_length = ret; } } } raw_probe_alignment(bs, s->fd, errp); bs->bl.min_mem_alignment = s->buf_align; Loading