brintos

brintos / linux-shallow public Read only

0
0
Text · 3.8 KiB · f1d468a Raw
109 lines · c
1/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */2/*3 * 1999 Copyright (C) Pavel Machek, pavel@ucw.cz. This code is GPL.4 * 1999/11/04 Copyright (C) 1999 VMware, Inc. (Regis "HPReg" Duchesne)5 *            Made nbd_end_request() use the io_request_lock6 * 2001 Copyright (C) Steven Whitehouse7 *            New nbd_end_request() for compatibility with new linux block8 *            layer code.9 * 2003/06/24 Louis D. Langholtz <ldl@aros.net>10 *            Removed unneeded blksize_bits field from nbd_device struct.11 *            Cleanup PARANOIA usage & code.12 * 2004/02/19 Paul Clements13 *            Removed PARANOIA, plus various cleanup and comments14 * 2023 Copyright Red Hat15 *            Link to userspace extensions, favor cookie over handle.16 */17 18#ifndef _UAPILINUX_NBD_H19#define _UAPILINUX_NBD_H20 21#include <linux/types.h>22 23#define NBD_SET_SOCK	_IO( 0xab, 0 )24#define NBD_SET_BLKSIZE	_IO( 0xab, 1 )25#define NBD_SET_SIZE	_IO( 0xab, 2 )26#define NBD_DO_IT	_IO( 0xab, 3 )27#define NBD_CLEAR_SOCK	_IO( 0xab, 4 )28#define NBD_CLEAR_QUE	_IO( 0xab, 5 )29#define NBD_PRINT_DEBUG	_IO( 0xab, 6 )30#define NBD_SET_SIZE_BLOCKS	_IO( 0xab, 7 )31#define NBD_DISCONNECT  _IO( 0xab, 8 )32#define NBD_SET_TIMEOUT _IO( 0xab, 9 )33#define NBD_SET_FLAGS   _IO( 0xab, 10)34 35/*36 * See also https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md37 * for additional userspace extensions not yet utilized in the kernel module.38 */39 40enum {41	NBD_CMD_READ = 0,42	NBD_CMD_WRITE = 1,43	NBD_CMD_DISC = 2,44	NBD_CMD_FLUSH = 3,45	NBD_CMD_TRIM = 4,46	/* userspace defines additional extension commands */47	NBD_CMD_WRITE_ZEROES = 6,48};49 50/* values for flags field, these are server interaction specific. */51#define NBD_FLAG_HAS_FLAGS	(1 << 0) /* nbd-server supports flags */52#define NBD_FLAG_READ_ONLY	(1 << 1) /* device is read-only */53#define NBD_FLAG_SEND_FLUSH	(1 << 2) /* can flush writeback cache */54#define NBD_FLAG_SEND_FUA	(1 << 3) /* send FUA (forced unit access) */55#define NBD_FLAG_ROTATIONAL	(1 << 4) /* device is rotational */56#define NBD_FLAG_SEND_TRIM	(1 << 5) /* send trim/discard */57#define NBD_FLAG_SEND_WRITE_ZEROES (1 << 6) /* supports WRITE_ZEROES */58/* there is a gap here to match userspace */59#define NBD_FLAG_CAN_MULTI_CONN	(1 << 8)	/* Server supports multiple connections per export. */60 61/* values for cmd flags in the upper 16 bits of request type */62#define NBD_CMD_FLAG_FUA	(1 << 16) /* FUA (forced unit access) op */63#define NBD_CMD_FLAG_NO_HOLE	(1 << 17) /* Do not punch a hole for WRITE_ZEROES */64 65/* These are client behavior specific flags. */66#define NBD_CFLAG_DESTROY_ON_DISCONNECT	(1 << 0) /* delete the nbd device on67						    disconnect. */68#define NBD_CFLAG_DISCONNECT_ON_CLOSE (1 << 1) /* disconnect the nbd device on69						*  close by last opener.70						*/71 72/* userspace doesn't need the nbd_device structure */73 74/* These are sent over the network in the request/reply magic fields */75 76#define NBD_REQUEST_MAGIC 0x2560951377#define NBD_REPLY_MAGIC 0x6744669878/* Do *not* use magics: 0x12560953 0x96744668. */79/* magic 0x668e33ef for structured reply not supported by kernel yet */80 81/*82 * This is the packet used for communication between client and83 * server. All data are in network byte order.84 */85struct nbd_request {86	__be32 magic;	/* NBD_REQUEST_MAGIC	*/87	__be32 type;	/* See NBD_CMD_*	*/88	union {89		__be64 cookie;	/* Opaque identifier for request	*/90		char handle[8];	/* older spelling of cookie		*/91	};92	__be64 from;93	__be32 len;94} __attribute__((packed));95 96/*97 * This is the reply packet that nbd-server sends back to the client after98 * it has completed an I/O request (or an error occurs).99 */100struct nbd_reply {101	__be32 magic;		/* NBD_REPLY_MAGIC	*/102	__be32 error;		/* 0 = ok, else error	*/103	union {104		__be64 cookie;	/* Opaque identifier from request	*/105		char handle[8];	/* older spelling of cookie		*/106	};107};108#endif /* _UAPILINUX_NBD_H */109