[DRBD-cvs] r1526 - in trunk: drbd drbd/linux user
svn at svn.drbd.org
svn at svn.drbd.org
Wed Sep 1 20:35:03 CEST 2004
Author: phil
Date: 2004-09-01 20:35:00 +0200 (Wed, 01 Sep 2004)
New Revision: 1526
Modified:
trunk/drbd/drbd_actlog.c
trunk/drbd/drbd_bitmap.c
trunk/drbd/drbd_compat_wrappers.h
trunk/drbd/drbd_fs.c
trunk/drbd/drbd_int.h
trunk/drbd/drbd_receiver.c
trunk/drbd/linux/drbd.h
trunk/drbd/linux/drbd_config.h
trunk/user/drbdsetup.c
Log:
I tried to rise drbd's device limit to 3.998TB. Currently
untested; needs testing.
Modified: trunk/drbd/drbd_actlog.c
===================================================================
--- trunk/drbd/drbd_actlog.c 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/drbd/drbd_actlog.c 2004-09-01 18:35:00 UTC (rev 1526)
@@ -504,9 +504,10 @@
*/
void drbd_al_apply_to_bm(struct Drbd_Conf *mdev)
{
- int i;
unsigned int enr;
unsigned long add=0;
+ char ppb[10];
+ int i;
wait_event(mdev->al_wait, lc_try_lock(mdev->act_log));
@@ -519,7 +520,8 @@
lc_unlock(mdev->act_log);
wake_up(&mdev->al_wait);
- INFO("Marked additional %lu KB as out-of-sync based on AL.\n",add >> 1);
+ INFO("Marked additional %s as out-of-sync based on AL.\n",
+ ppsize(ppb,add >> 1));
}
static inline int _try_lc_del(struct Drbd_Conf *mdev,struct lc_element *al_ext)
Modified: trunk/drbd/drbd_bitmap.c
===================================================================
--- trunk/drbd/drbd_bitmap.c 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/drbd/drbd_bitmap.c 2004-09-01 18:35:00 UTC (rev 1526)
@@ -576,6 +576,7 @@
struct drbd_bitmap *b = mdev->bitmap;
sector_t sector;
int bm_words, num_sectors;
+ char ppb[10];
MUST_BE_LOCKED();
@@ -587,8 +588,8 @@
drbd_bm_read_sect(mdev,sector);
}
- INFO("%lu KB marked out-of-sync by on disk bit-map.\n",
- drbd_bm_total_weight(mdev) << (BM_BLOCK_SIZE_B-10) );
+ INFO("%s marked out-of-sync by on disk bit-map.\n",
+ ppsize(ppb,drbd_bm_total_weight(mdev) << (BM_BLOCK_SIZE_B-10)) );
}
/**
Modified: trunk/drbd/drbd_compat_wrappers.h
===================================================================
--- trunk/drbd/drbd_compat_wrappers.h 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/drbd/drbd_compat_wrappers.h 2004-09-01 18:35:00 UTC (rev 1526)
@@ -366,7 +366,7 @@
static inline void drbd_set_my_capacity(drbd_dev *mdev, sector_t size)
{
set_capacity(mdev->vdisk,size);
- mdev->this_bdev->bd_inode->i_size = ((loff_t)size) << 9;
+ mdev->this_bdev->bd_inode->i_size = (loff_t)size << 9;
}
//#warning "FIXME why don't we care for the return value?"
Modified: trunk/drbd/drbd_fs.c
===================================================================
--- trunk/drbd/drbd_fs.c 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/drbd/drbd_fs.c 2004-09-01 18:35:00 UTC (rev 1526)
@@ -88,6 +88,21 @@
return rv;
}
+char* ppsize(char* buf, size_t size)
+{
+ // Needs 9 bytes at max.
+ static char units[] = { 'K','M','G','T' };
+ int base = 0;
+ while (size >= 10000 ) {
+ size = size >> 10;
+ base++;
+ }
+ sprintf(buf,"%d %cB",size,units[base]);
+
+ return buf;
+}
+
+
/* Returns 1 if there is a disk-less node, 0 if both nodes have a disk. */
/*
* THINK do we want the size to be KB or sectors ?
@@ -104,12 +119,13 @@
*/
STATIC int do_determin_dev_size(struct Drbd_Conf* mdev)
{
- unsigned long p_size = mdev->p_size; // partner's disk size.
- unsigned long la_size = mdev->la_size; // last agreed size.
- unsigned long m_size; // my size
- unsigned long u_size = mdev->lo_usize; // size requested by user.
- unsigned long size=0;
+ sector_t p_size = mdev->p_size; // partner's disk size.
+ sector_t la_size = mdev->la_size; // last agreed size.
+ sector_t m_size; // my size
+ sector_t u_size = mdev->lo_usize; // size requested by user.
+ sector_t size=0;
int rv;
+ char ppb[10];
m_size = drbd_get_capacity(mdev->backing_bdev)>>1;
@@ -120,7 +136,7 @@
if(p_size && m_size) {
rv=0;
- size=min_t(unsigned long,p_size,m_size);
+ size=min_t(sector_t,p_size,m_size);
} else {
rv=1;
if(la_size) {
@@ -140,7 +156,7 @@
if(u_size) {
if(u_size > size) {
ERR("Requested disk size is too big (%lu > %lu)\n",
- u_size, size);
+ (unsigned long)u_size, (unsigned long)size);
} else {
size = u_size;
}
@@ -151,12 +167,14 @@
err = drbd_bm_resize(mdev,size<<1); // wants sectors
if (unlikely(err)) {
ERR("BM resizing failed. "
- "Leaving size unchanged at size = %lu KB\n", size);
+ "Leaving size unchanged at size = %lu KB\n",
+ (unsigned long)size);
} else {
// racy, see comments above.
drbd_set_my_capacity(mdev,size<<1);
mdev->la_size = size;
- INFO("size = %lu KB\n",size);
+ INFO("size = %s (%lu KB)\n",ppsize(ppb,size),
+ (unsigned long)size);
}
}
Modified: trunk/drbd/drbd_int.h
===================================================================
--- trunk/drbd/drbd_int.h 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/drbd/drbd_int.h 2004-09-01 18:35:00 UTC (rev 1526)
@@ -77,12 +77,6 @@
# warning "FIXME. DRBD_MAJOR is now officially defined in major.h"
#endif
-/* FIXME because of code leftovers from previous times,
- * currently our code gets heavily confused for device sizes larger
- * than 2TB, so refuse to configure devices of that size.
- */
-#define DRBD_MAX_SECTORS (0xffffffffLU)
-
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
/*lge: this hack is to get rid of the compiler warnings about
* 'do_nbd_request declared static but never defined'
@@ -751,13 +745,13 @@
struct file *lo_file;
struct file *md_file;
int md_index;
- unsigned long lo_usize; /* user provided size */
- unsigned long p_size; /* partner's disk size */
+ sector_t lo_usize; /* user provided size */
+ sector_t p_size; /* partner's disk size */
Drbd_State state;
volatile Drbd_CState cstate;
wait_queue_head_t cstate_wait; // TODO Rename into "misc_wait".
Drbd_State o_state;
- unsigned long int la_size; // last agreed disk size
+ sector_t la_size; // last agreed disk size
unsigned int send_cnt;
unsigned int recv_cnt;
unsigned int read_cnt;
@@ -967,6 +961,9 @@
#define BM_EXT_PER_SECT ( 512 / BM_BYTES_PER_EXTENT ) // 4
*/
+#define DRBD_MAX_SECTORS \
+ ( (MD_RESERVED_SIZE*2 - MD_BM_OFFSET) * (1<<BM_EXT_SIZE_B-9) )
+
extern int drbd_bm_init (drbd_dev *mdev);
extern int drbd_bm_resize (drbd_dev *mdev, sector_t sectors);
extern void drbd_bm_cleanup (drbd_dev *mdev);
@@ -1021,6 +1018,7 @@
extern int drbd_read_remote(drbd_dev *mdev, drbd_request_t *req);
// drbd_fs.c
+extern char* ppsize(char* buf, size_t size);
extern int drbd_determin_dev_size(drbd_dev*);
extern int drbd_set_state(drbd_dev *mdev,Drbd_State newstate);
extern int drbd_ioctl(struct inode *inode, struct file *file,
Modified: trunk/drbd/drbd_receiver.c
===================================================================
--- trunk/drbd/drbd_receiver.c 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/drbd/drbd_receiver.c 2004-09-01 18:35:00 UTC (rev 1526)
@@ -1338,7 +1338,7 @@
Drbd_Parameter_Packet *p = (Drbd_Parameter_Packet*)h;
int consider_sync;
int oo_state;
- unsigned long p_size;
+ sector_t p_size;
if (h->length != (sizeof(*p)-sizeof(*h))) {
ERR("Incompatible packet size of Parameter packet!\n");
@@ -1444,7 +1444,8 @@
if( mdev->lo_usize != be64_to_cpu(p->u_size) ) {
mdev->lo_usize = be64_to_cpu(p->u_size);
- INFO("Peer sets u_size to %ld KB\n",mdev->lo_usize);
+ INFO("Peer sets u_size to %lu KB\n",
+ (unsigned long)mdev->lo_usize);
}
if(!p_size) {
Modified: trunk/drbd/linux/drbd.h
===================================================================
--- trunk/drbd/linux/drbd.h 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/drbd/linux/drbd.h 2004-09-01 18:35:00 UTC (rev 1526)
@@ -64,7 +64,7 @@
struct disk_config {
IN int lower_device;
- IN unsigned int disk_size;
+ IN __u64 disk_size;
IN enum io_error_handler on_io_error;
IN int meta_device;
IN int meta_index;
@@ -194,7 +194,7 @@
struct syncer_config sconf;
OUT int lower_device_major;
OUT int lower_device_minor;
- OUT unsigned int disk_size_user;
+ OUT __u64 disk_size_user;
OUT enum io_error_handler on_io_error;
OUT int meta_device_major;
OUT int meta_device_minor;
Modified: trunk/drbd/linux/drbd_config.h
===================================================================
--- trunk/drbd/linux/drbd_config.h 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/drbd/linux/drbd_config.h 2004-09-01 18:35:00 UTC (rev 1526)
@@ -23,7 +23,7 @@
extern const char * drbd_buildtag(void);
#define REL_VERSION "0.7.3"
-#define API_VERSION 75
+#define API_VERSION 76
#define PRO_VERSION 74
//#define DBG_ALL_SYMBOLS // no static functs, improves quality of OOPS traces
Modified: trunk/user/drbdsetup.c
===================================================================
--- trunk/user/drbdsetup.c 2004-09-01 11:58:53 UTC (rev 1525)
+++ trunk/user/drbdsetup.c 2004-09-01 18:35:00 UTC (rev 1526)
@@ -566,7 +566,7 @@
[LDMounted]="Lower device is already mounted.",
[MDMounted]="Meta device is already mounted.",
[LDMDInvalid]="Lower device / meta device / index combination invalid.",
- [LDDeviceTooLarge]="Currently we only support devices up to 2TB.\n"
+ [LDDeviceTooLarge]="Currently we only support devices up to 3.998TB.\n"
"Contact office at linbit.com, if you need more.",
};
More information about the drbd-cvs
mailing list