tcmu: clean up the code and with one small fix

Remove useless blank line and code and at the same time add one error
path to catch the errors.

Reviewed-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Xiubo Li <lixiubo@cmss.chinamobile.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
Xiubo Li 2017-07-11 18:06:41 +08:00 committed by Nicholas Bellinger
parent b3743c71b7
commit daf78c3051
1 changed files with 11 additions and 13 deletions

View File

@ -342,7 +342,6 @@ static inline bool tcmu_get_empty_block(struct tcmu_dev *udev,
page = radix_tree_lookup(&udev->data_blocks, dbi); page = radix_tree_lookup(&udev->data_blocks, dbi);
if (!page) { if (!page) {
if (atomic_add_return(1, &global_db_count) > if (atomic_add_return(1, &global_db_count) >
TCMU_GLOBAL_MAX_BLOCKS) { TCMU_GLOBAL_MAX_BLOCKS) {
atomic_dec(&global_db_count); atomic_dec(&global_db_count);
@ -352,14 +351,11 @@ static inline bool tcmu_get_empty_block(struct tcmu_dev *udev,
/* try to get new page from the mm */ /* try to get new page from the mm */
page = alloc_page(GFP_KERNEL); page = alloc_page(GFP_KERNEL);
if (!page) if (!page)
return false; goto err_alloc;
ret = radix_tree_insert(&udev->data_blocks, dbi, page); ret = radix_tree_insert(&udev->data_blocks, dbi, page);
if (ret) { if (ret)
__free_page(page); goto err_insert;
return false;
}
} }
if (dbi > udev->dbi_max) if (dbi > udev->dbi_max)
@ -369,6 +365,11 @@ static inline bool tcmu_get_empty_block(struct tcmu_dev *udev,
tcmu_cmd_set_dbi(tcmu_cmd, dbi); tcmu_cmd_set_dbi(tcmu_cmd, dbi);
return true; return true;
err_insert:
__free_page(page);
err_alloc:
atomic_dec(&global_db_count);
return false;
} }
static bool tcmu_get_empty_blocks(struct tcmu_dev *udev, static bool tcmu_get_empty_blocks(struct tcmu_dev *udev,
@ -527,7 +528,7 @@ static inline size_t get_block_offset_user(struct tcmu_dev *dev,
DATA_BLOCK_SIZE - remaining; DATA_BLOCK_SIZE - remaining;
} }
static inline size_t iov_tail(struct tcmu_dev *udev, struct iovec *iov) static inline size_t iov_tail(struct iovec *iov)
{ {
return (size_t)iov->iov_base + iov->iov_len; return (size_t)iov->iov_base + iov->iov_len;
} }
@ -566,7 +567,7 @@ static int scatter_data_area(struct tcmu_dev *udev,
to += offset; to += offset;
if (*iov_cnt != 0 && if (*iov_cnt != 0 &&
to_offset == iov_tail(udev, *iov)) { to_offset == iov_tail(*iov)) {
(*iov)->iov_len += copy_bytes; (*iov)->iov_len += copy_bytes;
} else { } else {
new_iov(iov, iov_cnt, udev); new_iov(iov, iov_cnt, udev);
@ -722,10 +723,7 @@ static bool is_ring_space_avail(struct tcmu_dev *udev, struct tcmu_cmd *cmd,
} }
} }
if (!tcmu_get_empty_blocks(udev, cmd)) return tcmu_get_empty_blocks(udev, cmd);
return false;
return true;
} }
static inline size_t tcmu_cmd_get_base_cmd_size(size_t iov_cnt) static inline size_t tcmu_cmd_get_base_cmd_size(size_t iov_cnt)