Page Menu
Home
ClusterLabs Projects
Search
Configure Global Search
Log In
Files
F3152827
gnbd.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
gnbd.h
View Options
/******************************************************************************
*******************************************************************************
**
** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
** Copyright (C) 2004 Red Hat, Inc. All rights reserved.
**
** This copyrighted material is made available to anyone wishing to use,
** modify, copy, or redistribute it subject to the terms and conditions
** of the GNU General Public License v.2.
**
*******************************************************************************
******************************************************************************/
#ifndef LINUX_GNBD_H
#define LINUX_GNBD_H
#define GNBD_DO_IT _IO( 0xab, 0x20 )
#define GNBD_CLEAR_QUE _IO( 0xab, 0x21 )
#define GNBD_PRINT_DEBUG _IO( 0xab, 0x22 )
#define GNBD_DISCONNECT _IO( 0xab, 0x23 )
#define GNBD_PING _IO( 0xab, 0x24 )
#define GNBD_GET_TIME _IO( 0xab, 0x25 )
enum {
GNBD_CMD_READ = 0,
GNBD_CMD_WRITE = 1,
GNBD_CMD_DISC = 2,
GNBD_CMD_PING = 3
};
#define gnbd_cmd(req) ((req)->cmd[0])
#define MAX_GNBD 128
/* values for flags field */
#define GNBD_READ_ONLY 0x0001
/* userspace doesn't need the gnbd_device structure */
#ifdef __KERNEL__
struct gnbd_device {
unsigned short int flags;
struct socket * sock;
struct file * file; /* If == NULL, device is not ready, yet */
int magic;
spinlock_t queue_lock;
spinlock_t open_lock;
struct list_head queue_head;/* Requests are added here... */
struct semaphore tx_lock;
struct gendisk *disk;
pid_t receiver_pid;
struct semaphore do_it_lock;
int open_count;
struct class_device class_dev;
unsigned short int server_port;
char *server_name;
char name[32];
unsigned long last_received;
struct block_device *bdev;
};
#endif /* __KERNEL__ */
/* These are sent over the network in the request/reply magic fields */
#define GNBD_REQUEST_MAGIC 0x37a07e00
#define GNBD_REPLY_MAGIC 0x41f09370
#define GNBD_KEEP_ALIVE_MAGIC 0x5B46D8C2
/* Do *not* use magics: 0x12560953 0x96744668. */
/*
* This is the packet used for communication between client and
* server. All data are in network byte order.
*/
struct gnbd_request {
uint32_t magic;
uint32_t type; /* == READ || == WRITE why so long */
char handle[8]; /* why is this a char array instead of a u64 */
uint64_t from;
uint32_t len;
}
#ifdef __GNUC__
__attribute__ ((packed))
#endif /* __GNUC__ */
;
/*
* This is the reply packet that gnbd-server sends back to the client after
* it has completed an I/O request (or an error occurs).
*/
#define SIZE_OF_REPLY 16
struct gnbd_reply {
uint32_t magic;
uint32_t error; /* 0 = ok, else error */
char handle[8]; /* handle you got from request */
};
struct do_it_req_s {
unsigned int minor;
int sock_fd;
};
typedef struct do_it_req_s do_it_req_t;
#endif /* LINUX_GNBD_H */
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Tue, Feb 25, 4:25 AM (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1464672
Default Alt Text
gnbd.h (2 KB)
Attached To
Mode
rF Fence Agents
Attached
Detach File
Event Timeline
Log In to Comment