Hey friends today, we were hanging out at the Magic Kingdom and we were celebrating fall dapper day 2021 I'm so excited. I got all dressed up in my best and we're gonna ride some rides and see if we can find anybody else That's all dressed up in their dapper best and just have a wonderful day at the Magic Kingdom any hoos Let's go do this. I guess a great way to start dapper day is with a little bit of the dapper dance So many times in the past years I used to just randomly be on vacation down here during dapper day And I would see all these people dressed up and I'd be like what's going on And then I learned about dapper day and ever since then I've tried to least come and catch Like at least one. There's many of them that they actually do throughout the year I'll put a link in the description Where you can actually find out all the times that they schedule it and when it actually happens yesterday It was at Epcot today. It's that Magic Kingdom and I like Magic Kingdom the best It's actually raining out at the moment So it looks like we're gonna get the rainy day parade or the rainy day cavalcade And I'm so excited because I never get to see it Okay, there is a bee on my head. There was a bee on my head Look at that. I'm her stud muffin. I'm his cupcake. I love it. That's awesome guys I didn't plan on actually being here because tonight. I'm actually gonna be volunteering I give kids the world for a night of a million lights so I just kind of put a nice little dapper outfit together and Decided to come out and enjoy. Oh, thank you And just have fun I mean, it's always amazing to come to dapper day and I feel like there's no way I could have been like I missed this one this year As the rain actually starts to go away and the sun peeks out again It looks like we can see a lot of people dressed up in their dapper best coming on over in front of the castle to get some photos And I ran into a nice bunch of dapper people here.  Yeah Look at this. Isn't it beautiful?  You guys all look fabulous. Thank you so much Happy dapper day Nice That is one good-looking group of dapper people right there Here are some of their Instagram handles and there's a lot more because there's tons of people in here So if you were in that video, please put your Instagram handle in the comments below and I'll try to pin them all but every one of you guys looked amazing I'm not too sure if this is a part of dapper day But there seems to be a lot of cheerleaders here today as well and they're actually cheering I Ran into some more friends here Danny 702 You guys look dapper as ever very fancy I always wanted to wear suspenders because I wanted to like pull on them You know what I mean, but I've never I you know, I think I need to get a pair one day I'm gonna get a pair of suspenders. That's the way Yeah, I Love it. Well, happy dapper day Oh, well, thank you Now we're gonna move on over to tomorrow land We're gonna see if we see any other dapper people around but I want to ride like maybe the people mover or dumbo because I love I love riding dumbo on dapper day Dapper day dumbo, do you know I mean and yeah, just kind of enjoy a little bit before we head over to give kids the World Village which I do plan on actually bringing you with me And I don't know if I can video much because I'm gonna be volunteering but yeah, it'd be nice to actually bring you along It does look like it's an incredibly busy day here though at the Magic Kingdom Buzz Lightyear Space Ranger spin has a 55 minute standby weight and look at that queue It's all outdoors and don't forget it was just raining not too long ago Shockingly though, it doesn't look like there's a lot of people waiting to ride the people mover So I think we're gonna start there One of these days I want to be able to ride with the orange cone. It would be such an honor I'm a little sad that I didn't bring a mask to match my dapper outfit But at least my mask matches my magic band kind of it's the holiday season anyway And here we go The people mover is the perfect ride for people watching especially on dapper day My favorite thing about the people mover is just being able to sit back and relax and it's a nice Breezy cool off ride and it's actually really good to ride during the rain because then you get to be outside During the rain and not be able to get wet Looks like the Thanksgiving crowds are definitely here right now. It's a space mountain is a 55 minute wait But it doesn't look like a 55 minute wait that actually looks like a hour and 30 minute wait I would say especially if Buzz Lightyear is a 55 minute wait Trying to keep my eye out for any dapper people as we go around There's some dapper people right there a couple more over there as well I just realized I have not been able to watch the fireworks and the people mover yet I wonder if Disney's enchantment is very good from up on the people mover I used to watch happily ever after and wishes all the time and I loved it, but I haven't done a champion yet Now it's time we make our way over to fantasy land And I want to see what the wait times for either the tea cups or Dumbo is I do love riding Dumbo though After every ride Dumbo, I think we're gonna need to get a coffee. So I'm thinking either joffreys or Starbucks I don't know which one I want to go with I do like kind of hanging out on Main Street So I might actually head down to Starbucks, but I could go for a pumpkin game changer if they still have it I don't know if they still have it It's just about starting to get dark outside and I love riding Dumbo when it's a little bit dark on because all the lights turn On and the water's like super blue Pick a Dumbo any Dumbo. I don't know which one I want Do I want a blue Dumbo a red Dumbo a purple Dumbo? I think I want an orange Dumbo. I spotted it I need it. This is the one We got to go up we got to go up Love it Dumbo just puts me in such a happy mood. I can't get enough of it Oh, look, we're gonna see the pond storm. We're coming right out right there.  Oh Looks like we're coming down Dumbo can make everything right Honestly, if you're just feeling a little bit down because of running around the park go ride Dumbo Honestly, there's no way you can hold back a smile on that ride. I mean I can't I really I can't at all Sometimes all I do is picture Darth Vader actually Roddy Dumbo and it cracks me up Now I want to make my way back up and through the castle down Main Street and to get a coffee and stare at some of the pretty lights And take a look at this. I ran into another dapper person and it's Bell and doesn't she look amazing? This is a great day enchanted tales with Bell and you like you're perfect. Honestly perfect. Thank you so much Happy dapper day Bye-bye That Bell is borderline almost the perfect bell like honestly that is so amazing kudos to her because Honestly, I walked by it. I was just like wait is Bell like out and doing a meet and greet But it wasn't it was I mean but it was I don't know. It's crazy unbelievable though Now we're gonna make our way through the castle and like I said Maybe we'll take a little detour into the Main Street bakery to see if we can get a coffee. I Feel like it's definitely gotten a lot busier since we've been out here We've only been around the park for about maybe two hours now But now it's getting to the point where people want to come down here and get those golden hour photos Because it's like the perfect lighting right now. It's very beautiful out a Couple more amazing dapper people and take a look at these outfits isn't this amazing you guys really went all out Congratulations, you look wonderful and happy dapper day Happy dapper day Seriously, if you just stand here by the castle, you'll see so many well-dressed people and I love it It is really awesome. Oh They're just walking by too It looks like the 50th anniversary Cavalcade is starting to make its way down Main Street USA right now So I don't know if it's gonna be super busy inside Starbucks, but we'll take a peek see you know But look how busy it is here, right? I mean we're following the parade right now, so it's definitely something else You would think like it's the whole parade coming down Well, that's not looking too promising at the moment Maybe we'll have to actually stop at Starbucks outside the park We have to get heading on over to give kids the world now and plus I want to stop and see Gracie before we actually head out Sorry, we couldn't spend more time here at the Magic Kingdom But like I said, you know, we have a lot of important things to do tonight And I'm gonna bring you along with me like as much as I can You know me I don't know what I can like film But it'll be nice to see what it's like to volunteer at get kids a world village And you could do it for a night of a million lights or you could do it just regularly You can sign up to volunteer and I'm gonna go over the process and just show you what it's like But I'm excited on the way out We ran into some more dapper people. So happy dapper day. You guys look fantastic. The dresses are amazing. I love it Yeah, happy dapper and that's the 25th anniversary castle, right? Nice, that is so crazy. Well, thank you guys. Enjoy. Have fun. Bye The next group of people I'm gonna show you as we make our way out may not be dressed in their dapper best But I think they are some of the best dressed people in the park tonight Looks like they're getting ready for the very merriest after hours and they are definitely dressed Amazing. I love it I'm parked over at the Grand Floridian because I stopped there to actually do photos first So we're gonna grab one of the resort launches and actually head over there And then we're gonna go home see Gracie get a coffee and then head to give kids a world And hopefully we'll do all that in under like 40 minutes. Hopefully figures crossed Well, it actually looks like the boat is still over at the Grand Floridian So I wonder if it's gonna be faster if we walk. Maybe we can race the boat. We're gonna see if this works I don't know. It might be a fail, but we're gonna find out. I usually walk all the time whenever I do Head to the Grand Floridian because it's actually a very nice walk But I'm looking at the fastest way because like I said, we're kind of in a hurry here So we'll see actually which way is better. Oh I might have jinxed myself it looks like the boat is actually starting to leave the Grand Floridian right now and we've got a Pretty good decent walk ahead of us We still might be there faster because it's still got to come all the way over here And then it's got a dock and then load and then back on over there. So we'll see but isn't this beautiful I love walking through here I'm in a hurry to get things done Rushing rushing to last no fun Still no boat over there. So we're definitely a little bit ahead of time here Unfortunately, I don't think I would be able to beat the monorail though That would be a little bit quicker Time for some coffee I got this coffee mug at CVS because it was like 75% off for all the false decor stuff And I think I paid a dollar for it and it's got one of those silicone lids on it so I could take it to go But yeah, now we're gonna walk Gracie real quick the most beautiful girl on earth There we go Gracie went on her walk. I've got my coffee I had to do a quick outfit change because I wasn't gonna volunteer in my dapper outfit Even though that would be pretty funny, but I think they actually give you a t-shirt here So I just figured I'd come like this in case I had to switch clothes and it's time to check in Here's the volunteer check-in spot. We're gonna figure out what we have to do from here There we go. We're all checked in and ready to volunteer I am so excited to show you guys where I'm gonna be working tonight Like it's like something I've always wanted to do and it's just like fun to me So like it's gonna be doing something fun for a great cause. It's the best thing in the world I ran into a friend here already and she brought a cupcake for Gracie. Thank you so much I hope you're having a great day. All right. Happy holidays So far we've ran into so many people and families that are actually here tonight And it makes me so happy that little girl who brought Gracie a cupcake that is amazing Honestly, I almost wanted to tear up, but it's time. My shift actually starts actually volunteering for here is really easy I did like an hour onboarding video like Orientation and I filled out a little paperwork and within like two hours I was completely just ready to go and now I can just pick and choose wherever I want to work Whatever shift I want whatever time basically you could do whatever you want as long as it's available And I picked the spot that I want to do tonight because it's something I've always wanted to do I Would have loved to actually volunteer to be Santa Claus I don't think I got the right credentials for that just yet But that would be amazing to do still the thing that I actually am doing is still kind of fun and something I've always wanted to do when I was a kid, you know Looks like the lights are starting to do their dance. It's my favorite thing this year. It's so beautiful I love all the Christmas music Look at this Wow Isn't this so beautiful Now we got to go report for duty it's time our shift is actually starting and Tonight we are gonna be working the Midway I've always wanted to do this and we're gonna do it tonight. I'm gonna actually be working this. I'm gonna be up there I'm so excited There we go now. We're ready to go This is so much fun, let me show you how everything actually works because I've always been curious about this Here is all of our prizes And what is really fun and neat about this is everybody wins all the kids get a prize But if you actually win the race you get to choose your prize from the top row right here But even if everyone plays and they don't win we still give out little stuffed animals everyone so that's what I love We're gonna give everybody something Once they get ready you got to come and actually start up the gun so you hit these little buttons below two three And number six Excellent Once you get everybody turned on we have to start it. Are you guys ready? All right on the counter three one two three Looks like number eight is in the lead coming in a Boy seven is creeping up. All right new group. Here we go. We got it light everybody up. Bada bing Bada boom Bada boom and one more Everybody ready on the count of three one Two them having so much fun doing this it looks like a little rain is actually come upon us though So the crowds actually clear it out, but I can tell you what I was here for a good hour and a half now And there has been a steady like full seats the whole entire time And it's basically three for ten or five dollars for a single person and everybody's been playing But like I said everyone gets prizes all the kids get prizes But of course the winner gets to choose but it's so nice just giving out stuff and it's it's all for good cause On the count of three one two three go Let's see who's going uh-oh Number seven looks like it's in the lead fours catch it up Oh Looks like we're just about all finished here seems like the night is coming to an end But wow just being here now with nobody actually around it's actually really magical I can hear the minions talking. They're actually singing How awesome is that And you can just see all the lights it's so pretty every time I've been here so far It's been a little bit of rain and it hasn't ruined anything Honestly, I feel like I would definitely come back and do the midway again because that was super fun giving out You know gifts and prizes to people and just kind of like coaching them up that was so fun But also I wouldn't mind like working the food like Boston Market like I wanted to do that or the tram tour That would be a lot of fun to do there's plenty of open places And like I said if you sign up to volunteer you can pick what you want to do for me I kind of always wanted to do a carnival game and It was as fun as I thought it was gonna be like I really did and the fact that I got to do it And it was supporting a great cause even better a Cool thing for all the volunteers at the end of the night if you're hungry You get to have some free food. They got Popeyes for Boston Market chicken sandwiches all the works And with that, I think we are done for the night. What a fun amazing experience Honestly, if you ever want to volunteer for give kids a world I will put the link in the description It is so worth it. It's so fun Like I said, it's a great cause and some people want to contribute back and if they can't you know make donations They always need people to actually volunteer at the village It takes so many people to run these events and just to make the magic honestly But you're signing up to create magic and I just love it. So I hope you enjoyed the video I enjoyed making it. We'll see you next time. Bye And we don't want to forget about Gracie girl.  Huh? You want a pup cake? Who's the pretty princess? Are you the pretty princess? Yes, you are. Oh, yes. Here it is.


At FanDuel, we know how great it is to celebrate a win. And we want everyone to celebrate this NFL season. That's why we're giving away over a million dollars in prizes with FanDuel free-to-play games. So lace up those dancing shoes. Because with FanDuel, you can feel like a winner after every play. Make every moment more with FanDuel. Official partner of the NFL.


All right, welcome everybody. We have a CEPFS talk and we have two of us of the CEPFS core contributors, Jeff and Patrick So please welcome them and enjoy the talk. Hi everybody. This is a talk about some work. I've been Working on for the last year or so. It's still quite leading edge. So be gentle So first of all go ahead go in. Oh, yeah, sorry. Let me apologize for this. Firefox browsed the web thing yake the door So anyway, just a little bit about us. I'm longtime colonel dev done some move to doing Recent work with CEPF and just recently took over a maintainership of case FFS Jane wanted to move on to doing more work in the NDS. And so I've taken over that part of it and Patrick is also a contributor or a lead person on CEPFS these days and joined Red Hat in 2016 and He mostly shepherds the project along at this point So anyway What motivated this work is the real is it?  So we'll you know, someone will call into the kernel We'll dispatch an RPC to the server And then we have to wait for the reply to come in and then finally we can return back to user land. Those are slow So this affects a whole lot of different workloads, you know, you're untarring files, you know our sink You know anytime you're removing a big directory tree And also stuff like compiling software, you know, basically anything you do that touches a file system is going to be affected by that So First is you know why first of all is why are local file systems so much faster? Well, the obvious thing is that they don't have a server to talk to right now. They don't have to make this long round trip Then there's also some journal non journal file systems that buffer their metadata mutations in memory So like these are stuff like ext2 Not so much in use these days But in most journal file systems the journals pretty quick and so, you know We don't tend to worry too much about the fact that we have to journal all this data in order to handle the crash recovery so the consequences of that is that you know, you can They can you know batch out the rights to the journal So you can do it do a whole bunch of you can build basically a transaction and then flush it out to the journal But those operations are not guaranteed to be not all You know, especially when you're dealing with these non journal file systems The operations that you do are not guaranteed to be durable unless you have sync So if you do a rename unlink anything like that It's possible that if the box crashes before the data hits the disc You may that operation may turn out never to have happened Even after you've returned back to user land now it turns out in the most modern journal file systems. That's not such an issue They almost all synchronously write to the journal before they'll return to user land But you know technically, you know You're supposed to have sync in order to do that in order to ensure that your Operation that persisted on disk Well, let's you take this part. So this is a So No Okay, I'll try to speak up. That's hard for me. All right, so I I Get you know just to give you all an introduction to Cephaphase for those of you who don't know Cephaphase is a POSIX Distributive file system. It's the oldest storage Application that's run on Ceph. It was the original use case for Ceph back in around 2005 It's a cooperative file system with the clients in particular of note is that the clients have direct access to the Object storage devices. They're able to read and write all the the file data blocks Themselves, they don't have to go through any kind of metadata server. So the server that Jeff was talking about earlier is actually the metadata server So that is the centralized services. There can be more than one that Aggregate all the metadata mutations journal them to Rados in the metadata pool and And also serve to manage the cash between all the clients making sure the clients are all consistent and And that the clients caches are also coherent. So there's a capability mechanism that the MDS has to give the clients rights to do things like read or write from a file or Keep track of what entries exist in a directory and that's all cooperatively maintained by the clients and and the MDS is the clients are considered trusted in this FFS model. So they're not going to misbehave in any way Because namely they do have direct access to the data pool, but they're also expected to maintain their caches coherently with the MDS So Jeff's going to talk in particular In this talk focusing on these RPCs at the top between the client and the active metadata server So, you know, how does the MDS manage all this you know mediate between the different clients? Well, it has this mechanism that we it's called the cap subsystems short for capabilities And basically capabilities if you're familiar with something like NFS or SMB is very similar to like a delegation or Oploc But they're more granular in particular they come in several different types of flavors So we have a pin off file link Exeter and so they a lot of that sounds pretty obvious and pin just ensures that the thing doesn't go away and off ensures that or pin actually ensures that it doesn't float between MDS as I believe actually so So we ensure that the thing is pinned to a particular MDS while the operation is going on off as covers user ownership mode File is a big cap I'll talk about that in a minute link is link count primarily and then X adder is you know covers the X adders So they all pretty much all have a shared and exclusive variety So we can hand out shared or exclusive caps to a to a client for them to buffer operations or your cache operations But the file caps are a little special they have a whole bunch of other different bits and if you see down here, too You know the way we express caps and track them in the current in and all the code is be a bit mask And so this you know part down here is More or less showing you sort of how the bits are laid out for the for the different caps The thing to notice about the file caps is that they are Pretty extensive. So we have we have shared exclusive of course, but there's also Cache read write buffer. I believe that one is an append and then there's a lazy IO Which is sort of a weirdo thing to to allow it to not have to talk to the MDS so much But mostly here we're talking about directory operations and so traditionally the MDS has Not really given out much in the way of caps to the to for on directories so we will give out shared caps pretty much but Exclusive caps not so much and then But so you know in order to try to speed up a synchron or a speed up directory operations What we want to do is start allowing the clients to do a bit more Locally and so to do that we have extended or over Overloaded the the file caps to have different meanings on directories. So in particular we want to allow Create and unlink Those are the two that at least we're starting with So basically and we're also going to have the MDS handout Exclusive caps so we you'll notice too that we have sort of a shorthand notation here as well for for how the caps work Or how the caps are expressed So internally in the MDS We've done Typically whenever we have to do a directory operation the MDS has to go gather a bunch of locks between you know to ensure that other MDS's don't come in and try to do something and so Zhang sort of lead a developer on the MDS has Developed a new lock caching facility so he can basically have an MDS gather locks for an operation on a directory And then cash those for later use if he needs to do another So essentially what happens is we only Hand these out though in on the first synchronous Creator unlink in a directory so now let's talk a little bit about dentury caching so You know again we don't want to always have to do a synchronous round trip to the server to do a look up or something like that for for a Directory entry and when I talk about dentury what I'm talking about is a path name component within the within the file system so In order to do an asynchronous directory operation we have to we need reliably We need to know that our cashed information about the directories correct We can't go and fire off an unlink and then find out later that oh that file didn't actually exist You know so that's not allowed so we have two mechanisms for tracking Denturies we have a Dentury leases and we can just come in positive or negative flavors and then we also can Hand out FS and by extension you know shared shared file caps on a directory or Exclusive caps on a directory exclusive implied shared and so for the latter if we If we just get the caps on a directory we don't actually know anything about the denturies that are in it So we have to either have done a reader in a full reader on the directory Or we have to know that the direct you know what the state of all the dentries in the direct is in the directory So for instance if we create a new directory, we know it's empty and we can consider it complete and This allows us so we do this use this today actually this allows us to do Lookups even negative lookups on a directory In without having to talk to the MDS if we know that the state that our information about the directories complete and someone asks for Some dentury that we know is not there. We don't have to talk to the MDS. We can just say now that doesn't exist So now let's talk about doing actual asynchronous operations So we'll start with talking about what what happens today, right? You know, it's pretty pretty typical similar to NFS or SMD or anything like that When we do an asynchronous we do a synchronous someone calls unlinked down into the kernel for instance We do that synchronously we dispatch a call to the MDS We have to wait for the reply to come in and when the reply comes in Then we can return back to user land But this is can be really slow, right? I mean think about it if doing like an RM dash RF on a directory You know we're going to do a reader find out what all is in there and then we go issue an unlink on each file and Know each of those is a round trip And so that slows that's pretty or very very slow So in fact here's a diagram that kind of shows the procedure for an asynchronous unlink So here we have so we didn't open on directory, right? So we did and then that's going to do you know get information about the directory We get capabilities for the directory. Let's say we've got you know exclusive caps We do a reader to fill it know to so that we know what all the dentures are and then we do Go back and you know that gets reply gets a reply and then we do an unlink and then that comes back And we do another unlink and that comes back and so on so forth and finally we can do an arm there at the bottom so You know if we're going to do these asynchronously we have a decision to make Do we want to wait to transmit them or do we want to? Just go ahead and fire them off as soon as we get them right and so it's natural to think about When you're talking about asynchronous operations, it's natural to think about like buffered IO in the kernel In that case we are writing to a cache and page cache in the kernel And then eventually we flush that out and so that the deal with the kernel with writes though Is that anytime you do a write in the kernel? There's a pretty high probability that you know that there will be a follow-on write a little later that may Also modify that data so often it's Advantages to wait a while to before you flush these things out Not so much on directories, you know operate, you know workloads that Repeatedly create and unlink the same dentures are pretty rare so, you know at least at this point we are Operating under the assumption that there's not a lot to be gained by delaying them And so as soon as someone calls this we're just going to go ahead and fire off the call And then we just won't wait on the reply We may change this in the future. There are some workloads things like our sink that do Will often copy out, you know create a file write to it and then rename it into place That may be more advantageous to do that. Can I wait until the end? So That may be more advantageous to so we may you know in the future consider doing this differently So an asynchronous unlink so how do we do this right? So first of all we have to get you know exclusive caps on the directory and we also need an unlink cap Which typically means that we have to have done a synchronous unlink in the directory first We also need to know that the denture is positive right so we have to know that the file exists and then also we there's also a Concept in Seth sort of exclusive to Seth that it has to be the primary denture for a for the file Seth has has a really strange way of tracking hard-linked files And so we exclude basically you're excluding hard-linked files from this at least for the time being So the idea here is that we're going to fire off the unlinked call to the MDS And then we're just going to assume that it worked right and then not wait on the reply so we can fire the thing off We go ahead and De-delete the dentury inside the kernel and then we return back to user land You know the upshot of that is that if we are doing a whole bunch of these We are shoveling them all out in parallel and that really can speed up You know like we're moving a directory recursively. So here's a there's our diagram again Pretty much all the same up here, but down here you can see we're firing off lots of them You know async unlinked requests and then they come back and then we eventually once we've you know Once all the replies have come in we can go ahead and issue them an arm to our request to remove the directory so Again, this is real bleeding edge work. So These numbers may change in the future, but for now I you know, I just did some real basic testing on a virtualized test environment on my home machine And so it basically created 10,000 files in a directory So and I should say say here too when we did start this work. We started with it unlinked because it's easier Creates are you know quite a bit harder. I'll go into why that is later, but so Here you can see if we just remove all the files in that directory if we have to wait and do them all synchronously It took about 10 seconds on this box But with asynchronous durops less than a second The catch is that the we have to wait For all the replies to come in before we can issue the rmder So again here. I'm just removing all the files in the directory I didn't actually remove the directory itself if you go and remove the directory itself yet You'll find that it blocks for a while, you know, it's still faster than the async or than the sync Synchronous case because you're not waiting for because we're issuing all these unlinks in parallel But it it does but you do notice a delay on the render part Here's some more numbers So these are Histograms that I created with BPF if you do not use BPF in it yet you should it's awesome but So you can see here these are this is the time spent in seph on length these these are in jiffy's which is a millisecond and so Here you can see synchronously That these are all quite slow right, you know, we're the fastest one is still 512,000 milk, you know milliseconds over here We're down to a thousand, you know thousand two thousand and The and you see down here. There's one outlier right here, you know, that's probably You know and some of them are still outliers I haven't gone to go figure out why some of them are not going as fast I think occasionally we get a situation where they go synchronous and Again, we have to do at least one it one synchronous remove in the directory to or one synchronous unlink in the directory before we can do an async Jeff I think those are actually micro seconds Nothing I thought it was one thousand micro seconds. I Did these in jiffy's so yeah, okay? So I'll have to go back and look maybe I've got it. Maybe I'm off by a factor of thousand, but I don't know Yeah, maybe you're right Okay, I stand corrected. I did do it in jiffy's though The so We have some opportunities to prove that improve this situation too right right now We're not doing us. We're doing synchronous RM there, but we may consider doing that asynchronously in the future Again to you know what I find you know in certain cases is that you know like we like I said We have some outliers here, and I think what happens is occasionally we end up doing something synchronously and then those Operations get backed up behind the pile of async operations that are in in flight So we probably have some may need to consider doing some throttling on this And then also we can consider batching up the unlink operations as well So that we get so we can just If we could batch a bunch of them up fire them all off it in in a single call that might be more efficient I'm not convinced on this the lot caching thing that jang has put in as seems to me that that's where the most of the slowdown would be So I'm suspecting that that may not be as is useful, but you may experiment with it and find out if there is a benefit It's probably with the MDS journaling. We would we might expect to see the MDS can write the operations to the journal more efficiently That's a good point. Yeah, so Okay, now let's talk about async create so If we do so the requirements for an async create we need DX and DC caps again, we've overloaded the file cache cap for this We also need a known negative dentury in this case of course because if there's already a file there We can't do a create on top of it And we so we need a negative either a negative dentury lease on the thing or we need You know, we already have DS on the parent directory by virtue of the fact that we have DX But we need completeness If we don't have the lease We also need a file layout. So like Patrick pointed out file data goes through Directly to the osd's the clients need to know where to write that data And so the file layout is what is what tells them that when we do that first synchronous create in a directory Then we copy that file layout because we know that any New file created in a in a directory will inherit the file layout from the parent And then we also need a Delegated inode number whenever you do a create, you know, we're creating an inode We're creating a dentury that inode But we need to know what that inode number is I'll talk about that a little bit more in a minute So again, we just fire off the create call immediately We set up the new inode plug into the dentury and and move on And return from the open Uh And we always assume that a newly created inode gets a full set of caps because we want the We know that the Typically whenever the you do a synchronous create even you on a new file We get back a full set of caps on it And we always set o exclusive in the call just because There's should be should be no reason that we can't uh, you know that the file is not there The file turns out to be there. We want it to error out. We don't want to over, you know, open the file and screw that up So inode number delegation So in order to uh, we need to know in advance what the inode number is going to be whenever we create this new inode So we have to hat that's in order to a hash it properly in the kernel So we can find it later and also to allow for rights onto into the file before the open reply comes back So we hand out ranges of inode numbers and then create responses now So whenever a uh, we do a synchronous create that first synchronous create, uh, the MDS will shovel out a pile of inode numbers to the client and then it can go and use those I mean, so we have a new tunable in in the user land MDS now to The MDS also preallocates inodes for a particular client on and attaches it to its session And so what we're doing is just delegating a pile of those to the client for use So this is tied currently to the MDS session. I think we need some work in this area still That right now if you lose the session then the inodes go away and it's not clear to me how we're going to Handle case where we'd like already fired off a request and it didn't work So error handling on this is all still a bit sketchy So let's talk about performance. Um, again, uh, we're gonna we're creating 10 000 files in a directory here So I'm doing a very simple, you know shell script loop To just write to all these files So without async directory operations takes about 11 seconds on this box With it about half. So A slight improvement Again histograms Again, if you see this with bpf, you'll see like the nice bars out about, you know text text bars outside But I've chopped those off here just because I don't have uh, I didn't have room on the slide But here you can see, you know, these are all quite slow Up here, you know, most of them are in this this range right here, you know 512 k to 1 million But over here with async derops, we can, you know, we're down into the, you know thousands We do have some outliers here Again, I think with what's happening in that case again I need to go do some analysis to figure out why but I think the situation there is that we Get to a situation where we run out of I know numbers And uh, so when that happens the client has to do synchronous And some of these calls end up backed up behind some of the previous async calls And then they take a long time to come back So we probably have some work to do here too again with throttling The all important kernel build test. Um, so I just did a, you know Built a you know made a little Linux tar ball make a directory CD into it Untar it and make make the thing So here just about five minutes to do the build Uh with async derops we shave about 50 seconds off. It's about a 20 improvement not bad So again opportunities we can to improve this would be we could do Allow for in place renames, you know, again, we may need to make an asynchronous rename We need to We could also batch creates as well if we buffer them for a little while We don't necessarily have to fire them off immediately Uh, and then we can also do other operations make der sim link Stuff like that would be kind of nice to add probably And of course, of course error handling, which is the Bugaboo for this whole thing So if we return early right error handling is where the where this is all Ify, so if we return early from an unlink or an open and what we do if these fail, right? I mean, that's the big question For creates we've already closed we could have already closed the File by the time the reply come in. I mean, we could have written written if there are small files in particular We could have opened them Written to them closed them and then all of a sudden the create reply comes in and we found out it didn't work for some reason Um, I'm not sure which failures are permitted by the protocol. I'm not sure nothing Patrick put that in you want to mention what that was about? I think so So, you know, obviously there's a lot of different types of failures for an unlink or open that could happen and um Part of the challenge with doing an asynchronous creator on link is identifying what failures Entirely are the responsible the the client and you would not Um, it would not be permitted for the mds to give you those failures as part of the asynchronous call versus um Failures that may occur at the mds for example, you know space Um, which the kernel client would need to handle somehow Um, you know space actually impracticed for metadata mutations. Just doesn't happen in sef unless you have a catastrophically Out of space sef cluster in which case you have many other problems But there's probably not very many failures that Uh, the kernel client can't actually handle itself So but we still need to go through all the different cases there and make sure we're not missing anything That's basically I think what that bullet points for So again, you know when I started this work, you know, I kind of hung the whole thing on this On this paragraph right that comes out of the fsync man page, right? And basically it just says calling fsync does not necessarily ensure that the entry in the directory Containing the file has also reached the disk for that an explicit fsync on the file descriptor for the directory is also needed So, you know the upshot being that if you don't that when you write a file Or create a file and write to it, uh, you also need to fsync on the directory too to ensure that the dentury actually made it to disk In practice, uh, most file systems nowadays, you don't need to do that anymore This is was written. I believe when you know ext2 was prevalent. Uh, and so You know nowadays the uh, almost all modern file systems journal to create before they return back to userland And so if the box crashes and comes back or whatever Uh, the file will certainly exist Just to add on to that. Um, you still see the the remnants of uh, very cautious Applications that are written to fsync on the database namely sequel light, which actually has some very excellent documentation for the entire rigmarole process of Synchronously writing the database correctly such that it will survive any kind of uh, crash or or uh, machine failure So they they did they do actually do the the fsync on the directory file descriptor But you'll see as many especially kernel developers belong, you know, it's actually fairly rare for Applications to use fsync correctly So uh, yeah, I mean In most cases fsyncing on the directory is not usually You know, it's usually pretty quick because there's not much to be written back But here at least in this implementation too, you know, if you do an fsync on the directory We will wait for all the buffered or wait for all the async operations to come back So you can't we can use that as a barrier to ensure that things actually did hit the mds and do the right thing So more more about error handling. Um, so currently after failure to unlink what we do is, uh, we just We mark the directory non-complete because we don't know what the heck happened, right We invalidate the dentury that was that was there and sit to force the uh, the client to have to do a new look up And then we set a right back error on the parent directory to show up so that if you do that fsync you'll get an error back After fail create we again invalidate the dentury We should also mark it non-complete Set writable and we set a right back error on the parent directory again and we set a right back error on the created i-node So, you know This is an area where i'm still exploring, you know, what we should do So one idea might be to propagate errors All the way back up to the top of the mount so that you could potentially open like a high level directory Call an fsync on that And then find out and then get an error back and then if you see that error, then you know Something failed down below in the modern world where we're doing a lot of stuff in containers Spinning up temporary containers to do builds and stuff like that That may be sufficient, right? You know if you if it falls over if something fell over during the build you can just throw that build away and start again Right, and we may need to consider new interfaces Oh, oh, they all know another idea might be to use sync of s sync of s and the kernels has pretty lousy error handling right now It basically the only error you can reliably get back from sync of s is E bad f so if you pass it a bad file descriptor But we could use that as well And that's it questions Jeremy you had a question earlier Yeah So my you kind of answered that later on but I was wondering if the self protocol had the equivalent of the asynchronous The thing with smb where you would basically chain operations together We have an asynchronous open with delete and close marks and then a close you chain the things together And then you can issue those asynchronously or together in one rpc And and basically the server then processes them in whatever order it wants and you're just waiting for them to come back Yeah, yeah, we don't do compounding Okay, more is the pity. Yeah, compounding. I mean there might be a future enhancement. Yeah, I would love to see that Stuff wasn't designed with that from the get-go and so it doesn't I mean Especially is if you're doing a lot an open a lot of operations close the the ability to implicitly just Sequence all those and use the file description implicitly from the open. He's very powerful Yeah, yeah, I'd love to have that. We don't have it right today. Yeah, so any other questions? We're working on an open source backup software named barrios and I'm sorry. Can you speak up a little? Pardon. Oh, can you speak up a little? Okay We are we are making an open source backup software named barrios and I hope this question isn't too off topic Um, glass fs has something named cluster find which can give us a list of files And directories changed since a certain point in time Does uh self have self fs have anything like that? Not that i'm aware of anybody or any reg you may know or patrick Okay So sef has uh, sef fs has this concept of recursive statistics, which um, one of the Which is like a stats on an inode except it's it's recursive in nature. So like you can do figure out how many, um Hierarchically how many files are under a directory tree by just doing it looking at a specific extended stat attribute of the of the directory One of those things you can look at is the version of the files So you can actually see that um, and that trickles up all the way to the root So if you know a file has been changed recently that you can look at the recursive statistics of the directory To see that something under it's changed and just keep going down and looking examining the files it's not Quite as efficient as the cluster of s where you know, you can get the entire diff and all See all the files, but you can the mechanism is there to actually do it yourself um Although in the future we do want to make it simpler by Building support of light cluster of s and the sef fs and making it a first class citizen of the file system So not quite, but you could do it yourself if you want it Any other questions jeremy again? So for returning errors, I thought that was interesting the only errors I can see other than sort of like the remote disk died As if someone does a rename of the directory out from under you Or if someone changes the permissions on the directory so that your operations would get access denied I'm assuming that you would get a lease on the directory first such that They would be blocked or you would get a pending Notification before that that's how you would handle that right right. That's what those caps are all about They're like they're kind of similar to an op-lock release. Yeah, I just on part of the metadata, but the but yes That would not be allowed while we had exclusive caps on the directory and you can't do this unless you do so got it. Okay, thanks Any other questions So just to add on to that one of the we didn't really get into this in too much detail But one of you heard jeff several times said, you know, the first synchronous creator the first synchronous unlink There you know our diagram was actually a bit wrong on that That we showed that not all of the unlinked requests are completely asynchronous The first one has to be synchronous and that's just so that the mds can acquire all the necessary locks And also issue any necessary capabilities so that you can do any further unlinks yourself So that first request is actually synchronous And one of the reasons for that is you need to get the the file layout for the create which Let's you know how to actually stripe the data blocks across multiple objects for the The new file And then also ensures that the md yet that the because file layouts can also be set hierarchically on a subtree That you know that nothing no directory above you has had its file layout changed such that the file layout on a new File should be something else so the client can safely move forward knowing that the file layout hasn't been changed Out from under it by by operations on a on a higher level directory And all that's protected by the the caps that the mds is issuing any other questions So this is all still experimental But part of this already in in the code So when will this be available will this be 16 or Uh Upcoming but the one off or is it like a multi-gear effort? Uh, I think the user land part of it the mds part is in we had to get that part in before we could even figure out Whether this is going to be worthwhile, right? And so we've got that part in for mostly. I think it is worthwhile. We're going to keep pursuing it Um the kernel bits. I have I mean I have prototype code, of course that works But it has some rough edges It won't make this merge window. Uh, so You know five seven would be the absolute earliest in the kernel part But probably later I have a feeling I'm going to probably want to do a cleanup of the sync fs code in the kernel And then turn around and and maybe plumb the error, you know, have that use that for the error handling You know recommend that we use that for the error handling And that probably will be a bit of an effort because the sync fs code needs some work So, yeah, any other questions? Just to add on to the answer to that question. Um, so the mds bits are actually going to be an octopus which will be released in March, so All the the groundwork is there The the step fuse client, um, probably won't have support until the p-release which we're calling pacific. So in 2021 That'll be available, but the kernel client I think which is getting most of our focus right now should you know, hopefully we'll have Something merged into mainline within a few months, you know Assuming everything's going as we expect Yeah, I think the unlinked code probably can go in fairly soon I almost merged it. I almost had them merge it for this coming merge window But I decided to wait because I'm going to have to rework some of the underlying code for For the creates to be better And I wasn't comfortable merging the unlinked part until I Felt better about what you know what that part would look like So I it's not quite there yet, but maybe later part of this year, you know, but My guess is that we'll probably have something in before too long and this will probably be like an optional feature to We right now I've got it Set on a module parameter, but we may eventually, uh, you know, you make an amount option or something like that I think we're out of time now. So if you have any questions, let me know


Unclenarian Thursday was forcefully adjourned due to the non-availability of other paper, a programme scheduled that dictates the proceedings on the floor of the house. Lawmakers were already seated as early as 11am for today's proceedings, but were forced to wait endlessly before the speaker took the action. Speaker Femig Bajabiamila was forced to order the removal of every staff in that department and the House of Representatives for possible redeployment. The House was more efficient. Okay, Deputy Leader, please adjourn the House. I am overwhelmed that this House do adjourn to Tuesday 11am, next week Tuesday 11am. And so, Mr Speaker, I rise to second the motion for the adjournment of the House moved by the Deputy Leader of the House. I'm going to hold you responsible. I'm going to hold whoever is responsible. This House sits at 11am. Everybody knows that. We are adjourned yesterday to 11 o'clock. It's 11.20am. When I came in, there was nobody on this row. You weren't here, none of your deputies were here. The other paper is not ready. We cannot function as a House. I mean, what kind of thing is that? What kind of thing is that? That we are not forced to adjourn the House. Please, everybody should see me in my office. House adjourns to Tuesday.


Hello, I'm going to present our paper Practical Product Proofs for Letters Commitments. And this is joint work with Thomas Atema and Wadi Mjoboszewski and my name is Gregor Zyla. Okay, so let me start with a simple example that shows that product proofs are useful. And this example is about range proofs. In a range proof, the goal is to be able to commit to some vector and then prove that the vector is binary, so all the coefficients are either 0 or 1, and also that the integer that is encoded by the vector lies in a certain interval, which means that only the first k coefficients are really 0 or 1, then the remaining n minus k coefficients are all 0, which implies that the integer that is encoded lies in the interval between 0 and 2 to the k. And then, therefore, this is called a range proof. This problem can be solved with a product proof, where one is able to prove product relations on individual coefficients of the vector m. So precisely, we want to be able to prove that the first k coefficients are 0 or 1, so we prove that they fulfill the relations mi times 1 minus mi equals 0, and then we want to prove that the other coefficients are 0, which we show by proving the relation mi squared equals 0. Now in our paper, one of the main results is an improved product proof for a certain letter space commitment scheme, and then, in turn, these product proofs allow us to construct a range proof, which for 1,024-bit range has a proof size of 31 kilobytes. But apart from this result, we also give new technical contributions that are interesting outside of product or range proofs. OK, with this introduction, let me start with the algebraic setup that we will be using, and as is usually the case in efficient letter space constructions, we will be working over some polynomial ring. Now it has emerged in the last years that it's usually best to choose the smallest ring that is sufficient for a task, and therefore, in all our protocols, we will use this standard power of 2 cyclotomic ring of rank 128. The rank 128 is because we aim for 128 bits of security, and then the modulus we are using will be a prime number, but I'm saying more about this in a second, so the modulus cube. OK, so I said our product proof is proving product relations for a particular lattice-based commitment scheme, so let me introduce this commitment scheme now, and we will be using the BD-LOP commitment scheme. This was presented at SCN 2018. In this scheme, there are the following public parameters. There is matrix B0 over the ring RQ, and then there are potentially many row vectors, B1, B2, and so on. With these public information, one can commit to arbitrary polynomials in the ring RQ, let's call them M1, M2, and so on, by sampling a short vector R and computing the following expressions. So one computes B0 times R, and then for every message polynomial MI, BIR plus MI. And then all these polynomials TI together with the vector T0, this gives the full commitment to all the polynomials MI. This is really a proper commitment scheme, so it is hiding and binding, and it's very easy to see this. So I'm quickly recalling this fact. The scheme is hiding because every polynomial in T0, but also the polynomials TI, they contain an additive term that is an independent module LWE sample, therefore all the polynomials look uniformly random under the module LWE assumption, and the scheme is binding because if one would be able to choose or to change one of the messages MI without changing the corresponding commitment TI, then one would also need to be able to change the randomness vector R, but this first equation T0 equals B0R kind of serves to authenticate this vector R. So if one would be able to give a second vector that still gives the same T0 second randomness vector, then one would have found a module C solution, which we assume is not possible. Okay, so now essentially all the efficient zero-knowledge proofs about this commitment scheme, they have an underlying building block that is just in a so-called approximate proof for the first equation. And we call this building block the opening proof because this proof of the first equation on its own essentially shows that one knows an opening for the commitment. And then starting from this building blocks, usually your knowledge proof systems about this commitment scheme work by adding additional features to this opening proof, so basically extending this opening proofs and our product proof is no example. But since we also give a new analysis of this opening proof that is very crucial for our product proof, I will now start with the opening proof. As I said, it's an approximate proof of the first equation, which is essentially modeled after schnoir proofs in the discrete block world, and it works in the following way. The prover samples a short so-called masking vector Y from some narrow distribution, then computes W which is B0Y, sends this to the verifier, the verifier samples a challenge C which is a very short polynomial that usually consists of trinary coefficients in minus 101, then the verifier sends this polynomial to the prover who computes what we call a masked opening. And we call this mask opening Z and it is of the following form, it is the masking vector Y plus C times the randomness vector. And then in the lattice world, there is a technical complication, the prover cannot just send this Z, otherwise the protocol would not be zero knowledge because the Z would reveal secret information, but there's by now a standard technique how to avoid this by basically aborting if Z reveals secret information. If the prover is able to send the Z, then the verifier checks that it is short and some verification equation. So this is the approximate proof for the first equation which shows that one knows an opening. Now I give an example how this can be extended to prove additional statements. And the simplest extension for example is if the prover just wanted to prove that one of the message polynomials say M1 is zero. In this case the prover would also compute B1Y and send this to the verifier within checks and additional verification equations. So this is essentially a general pattern that when uses this building block and adds new polynomials that are sent and new verification equations for the verifier and then one gets basically more advanced protocols. If one then analyzes this proof of commitment to zero that I've presented on the previous slide and then one finds that all one can extract is the following. So the thing one can extract is one message M1 and a so-called challenge difference C bar that is the difference of two challenges into accepting transcripts such that the C bar times M1 equals zero. Now this is of course only sufficient to prove that M1 is zero if C bar is invertible. And for this technical reasons all previous papers about zero knowledge proofs for the BD-LOP commitment scheme they have restricted to the case where C bar is always known to be invertible. So this is possible by either choosing the ring in a suitable way or by restricting the challenge set. So that one knows that the difference of all challenge polynomials is always invertible. And with this I can explain that our first basically improvement for the opening proof is that we drop this assumption that C bar is invertible and show how to work with non-invertible challenges. I explain this in the following way. So we need first a better characterization what it means for an element in our ring to be invertible and the best characterization for this works by the Chinese remainder theorem. So essentially depending on how much Q splits in the cyclo-tomic ring our ring RQ is the product of smaller fields. So this is nothing else than that the polynomial x to the 128 plus 1 factors modulo Q into smaller polynomials and then by the Chinese remainder theorem this ring is a product of the rings CQ x modulo these factor polynomials. For simplicity we usually call the fields that emerge the CRT slots, CRT for Chinese remainder theorem. Now for the torque I decided to focus on a particular simple case for our protocol where the ring only splits into CRT slots of degree 4. So this is why basically all the factors of x to the 128 plus 1 are of the form x to the 4 minus R. This removes a lot of the complications in our paper but it simplifies the torque. So now with this basically splitting of our ring we see that some element for example C bar is invertible even only if it is non-zero modulo all the factors x to the 4 minus Rj. And if you remember this equation C bar times m1 equals zero then we see this is not used less in the case where C bar is non-invertible because it still proves that m1 is zero modulo all the x to the 4 minus Rj where C is really non-zero. It's just that there might be a couple of entity slots where C bar is zero and then in these entity slots we don't learn anything about m1. The idea for our improved protocol is that we don't try to be able in the extraction to get a challenge different C bar that is really invertible so non-zero everywhere but we want to set up the scheme in such a way that the extractor can obtain many different C bar j's with a property that for every basically for every factor x to the 4 minus Rj there is one C bar j that is non-zero there and then if we also have all these equations C bar j times m1 equals zero then we can piece them all together and deduce that m1 is really completely zero everywhere. Okay so how do we implement this idea? Essentially all we have to do is we have to bound the probability that C bar is zero modulo these factors x to the 4 minus R because if this probability is very small then intuitively the prover has small cheating probability so basically all the prover can do to get away with proving that m1 is zero if it is not zero modulo one of the x to the 4 minus R is to hope that C bar is always zero modulo this factor and if this probability series is small then then his success probability is small. So how do we compute this probability? If we write down a challenge polynomial C with coefficients Ci that are sampled from the set minus one zero one then we can slightly rewrite this polynomial by grouping together coefficients whose index is or has the same remainder mod four so I've done this on the bottom of the slide and in this representation of C we see that the reduction of C mod x to the 4 minus R this is a polynomial with four coefficients and all the coefficients are evaluations of completely independent polynomials at R so therefore the coefficients of C mod x to the 4 minus R are independent and in the paper we compute the distribution and not really the full distribution but the maximum probability of this distribution over zq and find that for suitable parameters this maximum probability is not much larger than one over q and then basically following from this we can deduce that the probability that C bar mod x to the 4 minus R is zero which means that all the four coefficients are zero this happens only with probability essentially q to the minus 4 and if q is in the order of 2 to the 32 then this q to the minus 4 is negligibly small so around 2 to the minus 128. Of course modulo other factors so I've focused on this first factor on this slide but the probability or the maximum probability modulo the other factors is not independent but this is also not needed because we are not trying to get a C bar which is nonzero everywhere and this is enough that basically for each factor x to the 4 minus Rj this cheating probability is small individually because then the extractor basically is successively revinding and can get a C bar modulo all the factors where it is not zero. Okay so this concludes our first improvement of the opening proof now I come to the second improvement that is directly applied in our product proof. The second improvement is that we are able to show that the reply z so this mask opening sent by the prover in the opening proof and this is at least when the prover has sufficiently high success probability this is always precisely of the form in the honest transcript and the honest execution so by this I mean that in the extraction we are able to extract vectors y and r such that z can be written as y plus cr and these y r are fixed in the sense that if we remind the prover and send a new c then we of course get a new reply z but it will still be of the form y plus cr with the same with the same y and r as before so the prover really is committed to y and r and it's not only this but these vectors y are fulfilled the equations that we expect this in particular means that that the r vector is a useful is a valid randomness vector for the commitment scheme which means that the commitment polynomials ti they can be written as bi r plus mi I should note that it is not necessarily true that y and r are short anymore but this is also not needed here okay this basically new analysis of the opening proof makes it now much easier to work with more complicated verification equations that we knew how to handle before and in particular verification equations that are non-linear in the commitments and basically the first example for this is our product proof which works in the following way now so as I said before we know that that the mask openings that can be written as y plus cr with a fixed y and r that are independent of c and t1 is b1 r plus m1 and this allows us to do the following so we can let the verifier compute the polynomial which is defined by b1 z minus ct1 and if you look at this expression and just substitute the two equations from above then we find that f can be written as b1 y minus cm1 if you now look at this last equation then we see that this is really just a mask opening of m1 where the masking polynomial is b1 y and the secret is the message m1 and yeah so this is something which in previous product proofs would have been sent by the by the provas and previous product proofs the prover would have sent a mask opening of m1 and now we see that we can let the verifier compute this from data he has received in the opening proof without further communication cost and in previous protocols where the prover has sent such a mask opening it was also necessary that the prover proved that f is really well formed so it's really a correct mask opening of m1 and in our case this is not necessary anymore because the verifier computed f in a controlled way and therefore is convinced that that f is correctly formed and these two facts together decrease the communication cost of our product proof and then after we have established that the verifier can get hold of a mask opening the protocol proceeds in the standard way so we construct the following quadratic equation in f which is f squared minus cf and if we evaluate this and group together coefficients that involve the same power of c so that we get a quadratic polynomial c then we get a constant and linear term that are not important which we call the garbage terms and leading terms of the quadratic term which involves the coefficient m1 squared minus m1 and then also in the standard way if one proves that this leading coefficient vanishes then this proves the relation we want to prove and this works by essentially committing to the garbage terms subtracting them and then proving that the resulting polynomial is the zero polynomial. Now I said before that in the talk I focus on the case where our ring splits into crt slots of degree four and in this case the proof I've just basically explained on a high level this proof already has negligible soundless error because the soundless error of this approach is essentially determined by the size of the crt slots. In many applications it is advantages to to let the ring further split so in for example fully split into linear factors and then this approach would only have the soundness basically one over q which is non-negligible so then in this case the question arises how can one boost the soundness and is there maybe a better way than just repeating the protocol several times and this is another technical basically contribution of our paper which can also be used in in other protocols not just in our product proof but since it is quite technical I'm not going into much detail here and just giving a very high level idea how this works. The idea is essentially that we set up the opening proof in such a way that the proof isn't the verifier is not just able to compute one mask opening of the message m1 but several mask openings where the the message is rotated under some automorphism sigma and this is also very important all the mask openings still involve the same non-rotated challenge c and as soon as we have this we can basically construct the same quadratic relations on f as before but now for several f and then linear combine all of them with uniformly random challenge polynomials alpha and if we do this then we arrive at still quadratic polynomial just in c but with the leading term that is a random linear combination of the rotations of m1 squared minus m1 and then by doing the same as before proving that this term vanishes we actually prove the relation with a negligible sound error. The advantage of this approach over just repeating the the the the the basic protocol several times is that we still only have a quadratic polynomial c in the end and which means that there's still only two garbage terms and so basically where as when we would have repeated the product several times then we would have two garbage terms per repetition which costs which involves costs in the form of commitments to these garbage terms. Okay with this I finished my presentation and thank you very much for listening.


Hello everyone, welcome to this video lecture, myself Dipali Vadkar, working as assistant professor at WIT, Swollapur. In this session, we will study pulse time modulation. At the end of this video lecture, student will be able to describe working of pulse width modulator using IC-TRIPLE-5 circuit. Also student will be able to explain the working of PPM modulator using IC-TRIPLE-5 circuit. Purl's time modulation that is the PTM, it is the class of signaling techniques that encodes the sample values of analog signal onto time axis of digital signal. There are two types of PTM, first is a pulse width modulation that is the PWM and second is pulse position modulation that is the PPM. Let us see what is the PWM or pulse width modulation, it is pulse width modulation it is defined as the process of wearing the width of signal pulse in accordance with the modulating signal variations. So, in the pulse width modulation the width of train of pulses changes according to the modulating signal. So, here the amplitude and position of this train of pulses remains constant only there is a change in width. Now, first we will see the PWM modulator its block diagram. In this modulator basically the comparator is used, the one input of the comparator it is nothing but modulating signal X of t or continuous time signal which is to be modulated and another input to this comparator that is the sawtooth generator comparator compares both this input and it gives the output that is the variable width of train of pulses that is the PWM pulse width modulated signal. This is the circuit diagram for PWM modulator using IC555 here the clock signal is applied at the pin number 2 of this IC555. Another input to this circuit that is nothing but X of t continuous time signal or modulating signal and we get the output that is the PWM at the pin number 3 of this IC. So, let us see in detail the circuit this circuit basically consists two parts one is a differentiator and another is a IC555. So, here the this circuit is for differentiator circuit here this register R1 is connected to the VCC that is the positive supply. This differentiator differentiates the input clock signal and this differentiator generate positive and negative spikes at its output but here one diode is connected so this diode bypass this positive spikes means it pass the positive spike and it avoids the negative spike. So, we get the negative spikes at the output which is here across this these two points. So, the output of this differentiator that is nothing but negative spikes and its frequency is same as that of the frequency of clock signal. What is the frequency of clock signal? So, here the clock signal is adjusted exactly at the sampling frequency.  Now, these negative H trigger pulses are given to the IC555. Let us see the IC555 circuit here the IC555 circuit this negative H trigger pulse from differentiator introduced to pin number 2 and the modulating signal to pin number 5 and we get the output we get the output at the pin number 3 of this IC. In this circuit the first clock signal is applied input to the differentiator then this differentiator circuit generate a positive and negative spikes out of that positive spikes bypass through this diode D1 and the output here the negative spike. This out negative spikes that is the negative H trigger is applied to the pin number 2 of IC555. When this negative H trigger is applied to the pin number 2 then at that time here the output of this IC is becomes high. Now, due to this the capacitor which is present here this C2 capacitor this capacitor start charging. Now, when this capacitor charging here another input it is nothing but modulating signal this input is applied to the control pin of IC555. Now, here two inputs one is a modulating signal which is this X of t and another is the charging of this charging voltage of this capacitor charging and discharging voltage of the capacitor. Now, when the voltage across this capacitor C2 becomes equal to the input voltage or control voltage at that time the output of this IC changes means it states changes to low voltage. So, the starting H is decided by the trigger pulse and the ending H or lagging H of this pulse is decided by the modulating signal or input signal. So, we can say that the width of this pulse is depend upon modulating signal. So, this process is continuous and we get the variable width pulses train of pulses at the output of this IC that is the at the pin number 3 and this pulses are nothing but pulse width modulated output. Now, next is a pulse position modulation it is the analog modulating scheme in which the amplitude and width of pulses are constant while the position of each pulse varies according to the instantaneous value of message signal. So, in the pulse position modulation the position of all these pulses varies according to the amplitude of modulating signal. Let us see the block diagram for PPM modulator. In this PPM modulator again comparator is used to input to the comparator modulating signal and sort of signal. So, here at the comparator we get the PWM signal that is the pulse width modulated signal. So, this pulse width modulated signal is applied to the monostable multivibrator again this multivibrator is using the IC555 here and the at the output of monostable multivibrator we get the PPM output that is the pulse position modulated signal. Let us see the circuit diagram for PPM modulator. In the PPM modulator here again two parts one is a differentiator circuit another is the IC555 circuit, but here the control voltage is connected to the wind capacitor and which is connected to the ground. So, here the input for this circuit this input is only PWM signal and this pulse width modulated signal is given to the differentiator. Then here the differentiator consist R1-C1 capacitor this R1 is connected to the VCC. When we give the train of pulses to the differentiator then differentiator generate the negative spikes that is the negative edge trigger. Now this negative edge trigger applied at the P number 2 the output of this IC is at the P number 3. Now when this negative edge trigger is given to the IC we have seen it is working in the last slide. Now the question what will be the output of IC555 when trigger pulse is given pause the video for a while and think. So when we give the negative edge trigger at that time the output of this IC555 that output becomes high. So here first the input that is the PWM signal that is that wave is here and at the ending edge of this pulse there is a negative edge trigger and when the negative edge trigger is applied to the IC this is the output across this IC555. So the output becomes high. Output remains high for a particular time period. So this time period is a constant here and that time period is depend upon the value of this C2 and R2. So in pulse position modulation this pulse remains high for a particular time period. That time period is a constant and its amplitude this amplitude is equal to the amplitude of input signal the amplitude of PWM signal. Now this process is continuous and at the output we get a train of pulses, width is constant amplitude is constant but its position changes. So in this way we give the PWM signal input to the differentiator. The differentiator generate a negative edge trigger pulses when the negative edge trigger pulses given to the IC555 then the IC555 its output becomes high and this output remains constant for a constant time period and this time period is depend upon R2 C2 and after that time period the output of this IC becomes low. So in this way at the P number 3 of this IC555 we get a pulse position modulation output. These are the references. Thank you.


My name is Sam Hussein, I'm an independent journalist. I want to give a little bit of the political context of this. There's a truck going around with the pictures of the collateral murder video. Now, that wasn't just a hit on civilians. Who did it hit? Press. This has effectively been a war against truth-tellers from the very beginning. And why do you do that? You do that because you don't want the information to get out. So if the Iraqi journalists on the ground are getting truths out that you might not like, that's not good from US establishment's point of view. And Reuters did what? They were Reuters reporters, Tamrim and staff and so on. Reuters did what? Said, give us information. Give us information. Give us information. Pentagon wouldn't give information. We only know information, of course, because Chelsea Manning released it to WikiLeaks. They've gone after Chelsea Manning, and they've been going after Julian Assange. The message is clear. If you're a truth-teller, we're going to come after you. Last night at the concert, I was explaining part of this to somebody, and they were like, wow, that was such another time ago, like the Iraq war's ancient history or something. Well, that's the whole point, because what's WikiLeaks had to do for all of these years? They'd had to play defense. When snorled in all of these litigations and the persecution of Assange and so on, the threat that WikiLeaks posed was a global, independent media outlet that was well-funded. What was the first thing they did to go after WikiLeaks? They cut off their funding. They cut off their funding from MasterCard and Visa. People were pouring contributions in to WikiLeaks because they want the truth, and they saw that this was a global mechanism to get at some of that truth. So they went after that first. Who did that? Joe Lieberman. This has been a bipartisan effort from the very beginning. Part of the value of WikiLeaks is that it shows the duplicity of the duopoly. What do we have now? We have partisan hackery disguised as journalism. Trump is bad. Trump is great. Trump is bad. Biden's great. Biden's bad. That's what passes for a huge portion of journalism now. WikiLeaks shredded through that. Why? Because it went after the main dominant apparatus of the US establishment, its military-making capacity, economic issues, and so on. That's the last thing they want. It had profound effects on so many things. After the Iraq War, it helped spark the Arab uprisings. Now, what did the establishment do with that? The US media and the Gulf media, at that point, a declining Al Jazeera and increasingly bad Al Jazeera and Al Arabiya, twisted the Arab uprisings so that they didn't go after the monarchies that the US is allied with or client states. It went after what? The nationalist regimes that the US didn't like, that didn't always toe the US line, Syria and Libya. Now, WikiLeaks, it helped spark the Arab uprisings, but it couldn't cover them. It didn't have the capacity yet. It's threatened to have the capacity, but it didn't. Other major media twisted the coverage of the Arab uprisings so that you had what? Effectively, civil wars and failed states in the US's geopolitical rivals. Entities that the US establishment didn't want, Syria, Libya, that's why you had bloodbaths and now slave markets, et cetera, et cetera, and Libya and in Syria. So we are effectively prisoners, too. It's not just Julian. We are prisoners because we're not getting the information that we need. So Julian's imprisonment is deeply tied to our own. It's not just simply those Iraqi journalists who are targeted. It's not just simply Julian. It's the possibility of us getting truth about every issue under the sun. From war in Ukraine, to the war in Yemen, to economic policy, environmental policy, pandemic policy, and so on. They went after the whistleblowers, the people who inhabit these buildings, that even though they're on the payroll, some of them say, no, I'm going to take a risk of going to jail, like Chelsea Manning. I know the case of Catherine Gunn very well. She worked for GCHQ, the British equivalent of the NSA. Just as the US was about to invade Iraq, she released a document. It got into the observer, and the document showed that the US was spying on member states of the UN Security Council, in effect, trying to get information on diplomats at the UN. We have Joe Laurier here, who covered that, I'm sure, now with Consortium News. And what did they do? This story, despite my best efforts and other people's best effort, this was called by Daniel Ellsberg, the greatest leak of all time. She leaked in time, hopefully, to prevent a war. The last 20 years could have been radically different if that leak had been elevated by a substantial media mechanism. We don't have that. WikiLeaks threatened to do that. Her leak actually did end up having an incredibly powerful effect. The US, during the buildup of the Iraq War, continuously said, we're going to get two resolutions. We're going to get a second UN Security Council resolution. They never did. Why? Because when she disclosed the document, even though that document didn't get substantial play in the United States, it got play in those member countries, Mexico, Chile, Guinea, and so on. So they wouldn't go along with a second UN Security Council resolution. So they never got an actual legal authority, and that caused serious legal problems for them, especially in England. I think that's a sense of what's at stake here. It's every issue. It's the core of the First Amendment. There's a universality to it. That highlights why I think the crucialness of what WikiLeaks can do and should do and the long-term ramifications for us all of the prosecution of this time. Thanks.