Add function for getting member drive sector size
This patch introduces the function for getting sector size of given device (fd). Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
This commit is contained in:
parent
1b7eb672f7
commit
329715091c
1
mdadm.h
1
mdadm.h
|
@ -1112,6 +1112,7 @@ static inline struct supertype *guess_super(int fd) {
|
|||
}
|
||||
extern struct supertype *dup_super(struct supertype *st);
|
||||
extern int get_dev_size(int fd, char *dname, unsigned long long *sizep);
|
||||
extern int get_dev_sector_size(int fd, char *dname, unsigned int *sectsizep);
|
||||
extern int must_be_container(int fd);
|
||||
extern int dev_size_from_id(dev_t id, unsigned long long *size);
|
||||
void wait_for(char *dev, int fd);
|
||||
|
|
3
super1.c
3
super1.c
|
@ -213,8 +213,7 @@ struct align_fd {
|
|||
static void init_afd(struct align_fd *afd, int fd)
|
||||
{
|
||||
afd->fd = fd;
|
||||
|
||||
if (ioctl(afd->fd, BLKSSZGET, &afd->blk_sz) != 0)
|
||||
if (!get_dev_sector_size(afd->fd, NULL, (unsigned int *)&afd->blk_sz))
|
||||
afd->blk_sz = 512;
|
||||
}
|
||||
|
||||
|
|
18
util.c
18
util.c
|
@ -1324,7 +1324,7 @@ int get_dev_size(int fd, char *dname, unsigned long long *sizep)
|
|||
ldsize <<= 9;
|
||||
} else {
|
||||
if (dname)
|
||||
pr_err("Cannot get size of %s: %s\b",
|
||||
pr_err("Cannot get size of %s: %s\n",
|
||||
dname, strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
|
@ -1333,6 +1333,22 @@ int get_dev_size(int fd, char *dname, unsigned long long *sizep)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* Return sector size of device in bytes */
|
||||
int get_dev_sector_size(int fd, char *dname, unsigned int *sectsizep)
|
||||
{
|
||||
unsigned int sectsize;
|
||||
|
||||
if (ioctl(fd, BLKSSZGET, §size) != 0) {
|
||||
if (dname)
|
||||
pr_err("Cannot get sector size of %s: %s\n",
|
||||
dname, strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
|
||||
*sectsizep = sectsize;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Return true if this can only be a container, not a member device.
|
||||
* i.e. is and md device and size is zero
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue