Kernel Newbies archive on
 help / color / Atom feed
From: "Valdis Klētnieks" <>
To: Bharath Vedartham <>
Subject: Re: Overwriting copy functionality in filesystem
Date: Sun, 24 Mar 2019 10:06:36 -0400
Message-ID: <10332.1553436396@turing-police> (raw)
In-Reply-To: <20190324131808.GA24735@bharath12345-Inspiron-5559>

On Sun, 24 Mar 2019 18:48:08 +0530, Bharath Vedartham said:

> I was interested in implementing copy-on-write for my filesystem(for fun
> :P). When I do a "cp" operation, I do not want to create a seperate
> inode for the new file. I only want to create a inode when I make a
> change to the file.

Actually, /bin/cp isn't where copy-on-write gets you benefits. Where it really
shines is when you have a versioning filesystem that keeps track of the last
N versions of a file with minimum overhead. So if you have a 100 megabyte
file, open it, write 5 blocks of data, and close it, you now can read back
either the original or new versions of the file, and you're only using 100M plus
5 blocks plus a tiny bit of metadata.

> There is no vfs api for cp. I would need to make creat syscall aware of the
> fact that it is being executed by "cp". My immediate idea was to check
> if a file with the same data exists in the filesystem but that would be
> way too much overhead.

Have you looked at other filesystems that already support copy-on-write?

Hint:  How do file systems that support point-in-time snapshots work?

Kernelnewbies mailing list

  reply index

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-23 16:59 Bharath Vedartham
2019-03-23 19:01 ` Valdis Klētnieks
2019-03-24 13:18   ` Bharath Vedartham
2019-03-24 14:06     ` Valdis Klētnieks [this message]
2019-03-28 18:30       ` Bharath Vedartham
2019-03-28 20:07         ` Valdis Klētnieks
2019-03-23 19:03 ` Bernd Petrovitsch
2019-03-24 13:21   ` Bharath Vedartham
2019-03-23 19:05 ` Greg KH

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=10332.1553436396@turing-police \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Kernel Newbies archive on

Archives are clonable:
	git clone --mirror kernelnewbies/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 kernelnewbies kernelnewbies/ \
	public-inbox-index kernelnewbies

Newsgroup available over NNTP:

AGPL code for this site: git clone public-inbox