exofs: Move exofs specific osd operations out of ios.c
ios.c will be moving to an external library, for use by the objects-layout-driver. Remove from it some exofs specific functions. Also g_attr_logical_length is used both by inode.c and ios.c move definition to the later, to keep it independent Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
This commit is contained in:
@@ -40,6 +40,8 @@
|
||||
|
||||
#include "exofs.h"
|
||||
|
||||
#define EXOFS_DBGMSG2(M...) do {} while (0)
|
||||
|
||||
/******************************************************************************
|
||||
* MOUNT OPTIONS
|
||||
*****************************************************************************/
|
||||
@@ -208,10 +210,64 @@ static void destroy_inodecache(void)
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* SUPERBLOCK FUNCTIONS
|
||||
* Some osd helpers
|
||||
*****************************************************************************/
|
||||
static const struct super_operations exofs_sops;
|
||||
static const struct export_operations exofs_export_ops;
|
||||
void exofs_make_credential(u8 cred_a[OSD_CAP_LEN], const struct osd_obj_id *obj)
|
||||
{
|
||||
osd_sec_init_nosec_doall_caps(cred_a, obj, false, true);
|
||||
}
|
||||
|
||||
static int exofs_read_kern(struct osd_dev *od, u8 *cred, struct osd_obj_id *obj,
|
||||
u64 offset, void *p, unsigned length)
|
||||
{
|
||||
struct osd_request *or = osd_start_request(od, GFP_KERNEL);
|
||||
/* struct osd_sense_info osi = {.key = 0};*/
|
||||
int ret;
|
||||
|
||||
if (unlikely(!or)) {
|
||||
EXOFS_DBGMSG("%s: osd_start_request failed.\n", __func__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
ret = osd_req_read_kern(or, obj, offset, p, length);
|
||||
if (unlikely(ret)) {
|
||||
EXOFS_DBGMSG("%s: osd_req_read_kern failed.\n", __func__);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = osd_finalize_request(or, 0, cred, NULL);
|
||||
if (unlikely(ret)) {
|
||||
EXOFS_DBGMSG("Failed to osd_finalize_request() => %d\n", ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = osd_execute_request(or);
|
||||
if (unlikely(ret))
|
||||
EXOFS_DBGMSG("osd_execute_request() => %d\n", ret);
|
||||
/* osd_req_decode_sense(or, ret); */
|
||||
|
||||
out:
|
||||
osd_end_request(or);
|
||||
EXOFS_DBGMSG2("read_kern(0x%llx) offset=0x%llx "
|
||||
"length=0x%llx dev=%p ret=>%d\n",
|
||||
_LLU(obj->id), _LLU(offset), _LLU(length), od, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
unsigned exofs_layout_od_id(struct exofs_layout *layout,
|
||||
osd_id obj_no, unsigned layout_index)
|
||||
{
|
||||
/* switch (layout->lay_func) {
|
||||
case LAYOUT_MOVING_WINDOW:
|
||||
{*/
|
||||
unsigned dev_mod = obj_no;
|
||||
|
||||
return (layout_index + dev_mod * layout->mirrors_p1) %
|
||||
layout->s_numdevs;
|
||||
/* }
|
||||
case LAYOUT_FUNC_IMPLICT:
|
||||
return layout->devs[layout_index];
|
||||
}*/
|
||||
}
|
||||
|
||||
static const struct osd_attr g_attr_sb_stats = ATTR_DEF(
|
||||
EXOFS_APAGE_SB_DATA,
|
||||
@@ -308,6 +364,12 @@ int exofs_sbi_write_stats(struct exofs_sb_info *sbi)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* SUPERBLOCK FUNCTIONS
|
||||
*****************************************************************************/
|
||||
static const struct super_operations exofs_sops;
|
||||
static const struct export_operations exofs_export_ops;
|
||||
|
||||
/*
|
||||
* Write the superblock to the OSD
|
||||
*/
|
||||
|
Reference in New Issue
Block a user