extern int
dm_addmap (int task, const char *name, const char *target,
- const char *params, unsigned long size) {
+ const char *params, unsigned long long size) {
int r = 0;
struct dm_task *dmt;
}
extern int
-dm_get_map(char * name, unsigned long * size, char * outparams)
+dm_get_map(char * name, unsigned long long * size, char * outparams)
{
int r = 1;
struct dm_task *dmt;
struct dm_names *names;
unsigned next = 0;
char params[PARAMS_SIZE];
- unsigned long size;
+ unsigned long long size;
char dev_t[32];
int r = 1;
int dm_prereq (char *, int, int, int);
int dm_simplecmd (int, const char *);
-int dm_addmap (int, const char *, const char *, const char *, unsigned long);
+int dm_addmap (int, const char *, const char *, const char *,
+ unsigned long long);
int dm_map_present (char *);
-int dm_get_map(char *, unsigned long *, char *);
+int dm_get_map(char *, unsigned long long *, char *);
int dm_get_status(char *, char *);
int dm_type(char *, char *);
int dm_flush_map (char *, char *);
declare_sysfs_get_str(dev, "%s/block/%s/dev");
#define declare_sysfs_get_val(fname, fmt) \
-extern unsigned long \
+extern unsigned long long \
sysfs_get_##fname (char * sysfs_path, char * dev) \
{ \
char attr_path[SYSFS_PATH_SIZE]; \
char attr_buff[SYSFS_PATH_SIZE]; \
+ int r; \
+ unsigned long long val; \
\
if (safe_sprintf(attr_path, fmt, sysfs_path, dev)) \
return 0; \
if (0 > sysfs_read_attribute_value(attr_path, attr_buff, sizeof(attr_buff))) \
return 0; \
\
- return strtoul(attr_buff, NULL, 0); \
+ r = sscanf(attr_buff, "%llu\n", &val); \
+\
+ if (r != 1) \
+ return 0; \
+ else \
+ return (val); \
}
declare_sysfs_get_val(size, "%s/block/%s/size");
if (curpath->size == 0)
return 1;
- condlog(3, "size = %lu", curpath->size);
+ condlog(3, "size = %llu", curpath->size);
return 0;
}
int sysfs_get_rev (char * sysfs_path, char * dev, char * buff, int len);
int sysfs_get_dev (char * sysfs_path, char * dev, char * buff, int len);
-unsigned long sysfs_get_size (char * sysfs_path, char * dev);
+unsigned long long sysfs_get_size (char * sysfs_path, char * dev);
int path_discovery (vector pathvec, struct config * conf, int flag);
void basename (char *, char *);
char rev[SCSI_REV_SIZE];
char serial[SERIAL_SIZE];
char tgt_node_name[NODE_NAME_SIZE];
- unsigned long size;
+ unsigned long long size;
unsigned int checkint;
unsigned int tick;
int state;
int action;
int pgfailback;
int failback_tick;
- unsigned long size;
+ unsigned long long size;
vector paths;
vector pg;
char params[PARAMS_SIZE];
print_map (struct multipath * mpp)
{
if (mpp->size && mpp->params)
- printf("0 %lu %s %s\n",
+ printf("0 %llu %s %s\n",
mpp->size, DEFAULT_TARGET, mpp->params);
return;
}
printf("\n");
- if (mpp->size < 2048)
- printf("[size=%lu kB]", mpp->size / 2);
- else if (mpp->size < 2097152)
- printf("[size=%lu MB]", mpp->size / 2048);
- else if (mpp->size < 2147483648)
- printf("[size=%lu GB]", mpp->size / 2097152 );
+ if (mpp->size < (1 << 11))
+ printf("[size=%llu kB]", mpp->size);
+ else if (mpp->size < (1 << 21))
+ printf("[size=%llu MB]", mpp->size >> 10);
+ else if (mpp->size < (1 << 31))
+ printf("[size=%llu GB]", mpp->size >> 20);
else
- printf("[size=%lu TB]", mpp->size / 2147483648);
+ printf("[size=%llu TB]", mpp->size >> 30);
if (mpp->features)
printf("[features=\"%s\"]", mpp->features);